WDG看门狗
1. WDG(Watchdog)看门狗
WDG看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性
看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号
STM32内置两个看门狗:
- 独立看门狗(IWDG):独立工作,对时间精度要求较低
- 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用
tip
如果程序出问题,卡死了,那么看门狗硬件电路就会自动帮我们复位一下,防止程序长时间卡死。
独立开门口的作用是通过定时器原理来确保程序正常运行。如果程序在设定的最大喂狗时间内没有执行喂狗操作(即没有及时重置计数器),独立开门口会自动产生复位信号,从而避免程序因卡死或长时间运行而陷入罢工状态。
窗口WDG必须在规定好的时间窗口内“喂狗”——也就是写入寄存器。窗口看门狗使用APPE时钟,没有专用时钟,因此能检测到独立开门口无法检测的一些问题,如喂狗代码意外执行或程序运行速度不一致等。
2. IWDG结构
IWDG即独立看门狗。
3. IWDG键寄存器
4. IWDG超时时间
5. WWDG结构
6. WWDG工作特性
递减计数器T[6:0]的值小于0x40时,WWDG产生复位
递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位
递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位
定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位
7. WWDG超时时间
超时时间:
窗口时间:
其中: