文章目录
- WDG(Watchdog)看门狗
- 独立看门狗
- 独立看门狗框图
- 超时时间计算
- 窗口看门狗
- 超时时间
- 独立看门狗与窗口看门狗对比
- 补充
WDG(Watchdog)看门狗
- 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性
- 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号
- STM32内置两个看门狗
独立看门狗(IWDG):独立工作,对时间精度要求较低
窗口看 门狗(WWDG):要求看门狗在精确计时窗口起作用
独立看门狗
独立看门狗框图
LSI:40KHz
键寄存器
- 键寄存器本质上是控制寄存器,用于控制硬件电路的工作
- 在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率(避免特殊情况导致寄存器内容修改为特殊值)
超时时间计算
超时时间:TIWDG = TLSI × PR预分频系数 × (RL + 1)
其中:TLSI = 1 / FLSI
窗口看门狗
窗口看门狗框图
- WWDG_CR:
WDGA:看门狗使能位
T6:溢出标志位,将T6到T0看作一个整体则递减为0x40(100000)以下时溢出
写入WWDG_CR即为喂狗操作 - WWDG_CFR:设置一个窗口值,当递减计数器的值大于窗口值时,使比较寄存器值为1,可以避免喂狗过于频繁
窗口看门狗注意内容: - 递减计数器T[6:0]的值小于0x40时,WWDG产生复位
- 递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位
- 递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位
- 定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位
超时时间
- 超时时间:
TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1) - 窗口时间:
TWIN = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0]) - 其中:TPCLK1 = 1 / FPCLK1
例如:WDGTB = 0,T[5:0] = 0时,TWWDG = 1 / 36000 * 4096 * 1 * 1 = 0.113
独立看门狗与窗口看门狗对比
补充
独立看门狗和窗口看门狗都只有开启命令,开启后无法关闭