STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG).doc

上传人:白大夫 文档编号:3273817 上传时间:2019-08-07 格式:DOC 页数:4 大小:19.50KB
返回 下载 相关 举报
STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG).doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG).doc》由会员分享,可在线阅读,更多相关《STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG).doc(4页珍藏版)》请在三一文库上搜索。

1、STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU复

2、位,此时本来运行的程序终止重新启动单片机(发生了故障)。在使用了看门狗之后,在正常运行的程序中加入喂狗的程序,即采用定时器的方式每隔一段时间进行一次喂狗重置计数装载值,这样,只要程序正常运行,没有出现故障或软件错误,就会不断的定时喂狗,从而不会使计数值达到超时值产生复位。一、独立看门狗IWDG:1、IWDG主要性能1)自由运行的递减计数器2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作)3)看门狗被激活后,则在计数器计数至0x000时产生复位2、IWDG功能描述在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到

3、末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要键寄存器IWDG_KR中被写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。void IWDG_ConfiguraTIon(void)写入0x5555,用于允许狗狗寄存器写入功能IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);狗狗时钟分频,40K/256=156HZ(6.4ms)IWDG_SetPrescaler(IWDG_Prescaler_256);喂狗时间 5s/6.4MS=781 。注意不能大于0xfffIWDG_SetReloa

4、d(781);喂狗IWDG_ReloadCounter();使能狗狗IWDG_Enable();二、窗口看门狗WWDG:1、WWDG主要特性1)可编程的自由运行递减计数器2)条件复位当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。见图155。3)如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置1),并且当7位(T6:0)递减计数器从0x40翻转到0x3F(T6位清零)时,则产生一个复位。

5、如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,也将产生一个复位。应用程序在正常运行过程中必须定期地写入WWDG_CR寄存器以防止MCU发生复位。只有当计数器值小于窗口寄存器的值时,才能进行写操作。储存在WWDG_CR寄存器中的数值必须在0xFF和0xC0之间:4)启动看门狗在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位。5)控制递减计数器递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。 T5:0位包含了看门狗产生复位之前的计

6、时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR寄存器时,预分频值是未知的。配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于0x3F时被重新装载,图155描述了窗口寄存器的工作过程。另一个重装载计数器的方法是利用早期唤醒中断(EWI)。设置WWDG_CFR寄存器中的WEI位开启该中断。当递减计数器到达0x40时,则产生此中断,相应的中断服务程序(ISR)可以用来加载计数器以防止WWDG复位。在WWDG_SR寄存器中写0可以清除该中断。void WWDG_ConfiguraTIon(void)

7、窗口看门狗时钟允许RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);看门狗节拍 = (36M/4096)/8 = 1098 Hz就是说一秒钟计数器减1098下WWDG_SetPrescaler(WWDG_Prescaler_8);窗口值用0x42就是说计数器满是0x7f在减到0x42之前喂狗了就算喂早了-复位WWDG_SetWindowValue(0x42);看门狗使能并初始化定时器为0x7f最大就是0x7f计数器减到到0x3F(T6位清零)时,则产生一个复位WWDG_Enable(0x7F);Clear EWI flag 清中断标记WWDG_ClearFlag();使能 EW interrupt这个会在计数器减到0x40的时候产生一个死前中断 当然你也可以在这个中断里赶紧喂狗-省的狗咬你(复位)WWDG_EnableIT();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1