WDG简介
WDG(Watchdog)看门狗
看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因出现卡死或者跑飞现象时,看门狗可以技术复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性。其实这里可以将其理解为家里养的狗,当家里来了小偷这种对家里有危害的人的时候,可以将其驱离,保证家里安全。
看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重装计数器)操作时,看门狗硬件电路就自动产生复位信号
STM32内置两个看门狗
独立看门狗(IWDG):独立工作,对时间精度要求较低
窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用,必须在某个时限内喂狗,既不可以早于这个时间点,也不可以晚于这个时间。就比如吃午饭的时间点在中午11-12点,那么喂狗的时间必须在这个时间段,不能早于11点,也不能晚于12点。
IWDG框图
IWDG键寄存器
键寄存器本质上是控制寄存器,用于控制硬件电路的工作
在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路收到干扰的概率
IWDG超时时间
超时时间:
其中:
WWDG框图
T6位作为标志位,当为1是表示为溢出,为0表示溢出,也就是最小值为100 0000(0X40),再次递减时即为011 1111(0X3F),这时溢出,进行复位操作
WWDG工作特性
递减计数器T[6:0]的值小于0X40时,WWDG产生复位
递减计数器T[6:0]在窗口W[6:0]外被重新转载时,WWDG产生复位,也就是不能过早喂狗
递减计数器T[6:0]等于0X40时可以产生早期唤醒中断(EWI),也叫死前中断,用于重装载计数器以避免WWDG复位。这里的意思也就是即将复位,还需不需要进行其他操作(一些重要操作,比如保存重要数据,关闭危险设备等等)。还有一种用法就是,即将复位,但是我们可以在中断里执行一些代码进行解决,或者这个任务不是很危险,超时了只想做一些提示,不想让他复位,这样的话就可以在早期中断里阻值复位。
定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位
WWDG超时时间
IWDG和WWDG对比