中级会员
 
- 积分
- 312
- 金钱
- 312
- 注册时间
- 2015-7-15
- 在线时间
- 36 小时
|
本帖最后由 bruceSTM32 于 2016-3-10 22:54 编辑
窗口看门狗是STM32的一大创新,弥补了独立看门狗不能检测到的故障的情况。
什么情况下窗口看门狗会复位?
(1)T[6:0]从0x40递减到0x3F,看门狗复位;
(2)在计数器值大于窗口寄存器的数值的时候,重新装载计数器值,看门狗复位。
什么时候喂狗?
必须在窗口值与0x40之间进行刷新,在窗口值之前或者0x40之后刷新都会引起窗口看门狗复位(窗口寄存器值肯定是大于0x40)。
因此0x40是喂狗的下限值,窗口值是喂狗的上限值,必须在上限与下限之间喂狗,否则看门狗复位。
怎么喂狗?
当递减计数器的值递减到窗口值与0x40之间时,就需要重新加载递减计数器的值,这就是喂狗。
喂狗时间间隔是怎么计算出来的?
喂狗的最长时间间隔计算:
当计数器的值=0x7f,窗口值=0x40,就是喂狗的最长时间间隔。
取预分频器时基WDGTB=0,TWWDG=4096*1*(0x7f-0x40+1)/36=7.28ms
喂狗的最长时间间隔计算:
当计数器的值=0x40,窗口值=0x40,就是喂狗的最短时间间隔。
取预分频器时基WDGTB=0,TWWDG=4096*1*(0x40-0x40+1)/36=113us
窗口看门狗操作步骤:
1、开启窗口看门狗时钟
WWDG是由APB1总线时钟驱动,而IWDG是由独立的低速内部时钟驱动
2、配置窗口看门狗各个寄存器
启用看门狗,设置计数寄存器和窗口寄存器的初值,设置预分频器的值,开启唤醒中断
3、配置窗口看门狗中断
中断分组,以及使能中断
4、编写中断服务函数
在中断服务函数里一定要记得清除提前唤醒中断标志位。
|
|