窗口看门狗
1.WWDG简介
窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。不仅防止程序 “卡死不喂狗”,还能避免程序 “异常早喂狗”(如死循环中误执行喂狗指令),适用于对 CPU 内核运行状态要求极高的场景,是独立看门狗(IWDG)的重要补充。
窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。
产生复位条件:
当递减计数器值从 0x40 减到 0x3F 时复位(即T6位跳变到0)
计数器的值大于 W[6:0] 值时喂狗会复位。
产生中断条件:
当递减计数器等于 0x40 时可产生提前唤醒中断 (EWI)。
在窗口期内重装载计数器的值,防止复位,也就是所谓的喂狗。
2.核心定义:为什么需要 “窗口” 机制?
在嵌入式系统中,独立看门狗(IWDG)的监控逻辑相对宽松:只要程序在 “溢出周期内” 执行喂狗即可。但实际场景中,可能出现一种隐蔽故障 ——程序陷入 “异常循环” 却仍能喂狗:
例如,程序因逻辑漏洞进入死循环,但循环中恰好包含喂狗指令,此时 IWDG 会被持续 “误喂狗”,无法检测到故障,导致系统长期处于异常状态。
窗口看门狗的 “窗口机制” 正是为解决此问题而生:它强制要求喂狗操作必须在一个特定的 “时间窗口” 内执行 —— 早于窗口上限(不允许过早喂狗)、晚于窗口下限(不允许过晚喂狗)都会触发复位。这种 “双向限制” 让监控更严格,能覆盖 IWDG 无法检测的 “异常喂狗” 场景。
3. WWDG工作原理及框图
其中T6通常为1,当T1~T5为任意值,当T1~T5为0,即为0X40
随后减一,T6由1变0,即为0X3F,产生复位
写入WWDG_CR(喂狗)后,如果T6:0 > W6:0 比较结果为1,产生复位