跳到主要内容

WDG看门狗

1. WDG(Watchdog)看门狗

WDG看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性

看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号

STM32内置两个看门狗:

  • 独立看门狗(IWDG):独立工作,对时间精度要求较低
  • 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用
提示

如果程序出问题,卡死了,那么看门狗硬件电路就会自动帮我们复位一下,防止程序长时间卡死。

独立开门口的作用是通过定时器原理来确保程序正常运行。如果程序在设定的最大喂狗时间内没有执行喂狗操作(即没有及时重置计数器),独立开门口会自动产生复位信号,从而避免程序因卡死或长时间运行而陷入罢工状态。

窗口WDG必须在规定好的时间窗口内“喂狗”——也就是写入寄存器。窗口看门狗使用APPE时钟,没有专用时钟,因此能检测到独立开门口无法检测的一些问题,如喂狗代码意外执行或程序运行速度不一致等。

2. IWDG结构

IWDG即独立看门狗。

Image

3. IWDG键寄存器

Image

4. IWDG超时时间

Image

5. WWDG结构

Image

6. WWDG工作特性

递减计数器T[6:0]的值小于0x40时,WWDG产生复位

递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位

递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位

定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

Image

7. WWDG超时时间

超时时间:

TWWDG=TPCLK1×4096×WDGTB预分频系数×(T[5:0]+1)TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)

窗口时间:

TWIN=TPCLK1×4096×WDGTB预分频系数×(T[5:0]W[5:0]) TWIN = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0])

其中:TPCLK1=1/FPCLK1TPCLK1 = 1 / FPCLK1

Image

8. WWDG vs. IWDG

Image