一句话

普通看门狗只要求「别忘喂」,窗口看门狗更狠:喂早了算错、喂晚了算错、不喂也算错——专治「程序跑飞但还在机械喂狗」的假活。

看门狗结构

三段时间线

  1. T_INIT(初始窗口,典型 600ms):nRESET 拉高后开始,等第一次有效喂狗。默认只认 SPI 喂狗(防止 WDI 脚上电抖动误触发)
  2. T_MIN(禁止区):一次有效喂狗后的固定时长——这段时间喂狗 = 犯规(程序跑飞常伴随后高速空转喂狗)
  3. T_MARGIN(窗口区):T_MIN 结束后的开放窗口——必须在窗口内喂,拖到超时也算错

三段循环往复,节奏由 SPI 配置(WDCYC 时基 + CW/OW 计数),可配到 ms 级到秒级。

错误计数的赏罚规则

情形计数变化
窗口内有效喂狗-1(下限 0)
禁止区喂狗 / 窗口超时未喂+2,并发中断
计数 ≥ 阈值 WWDETHR(可配 0~15)nRESET 拉低,回 INIT

故意设计成「错一次 +2、对一次只 -1」:连续错几次就积累到阈值,偶发一次错会被后续正确喂狗洗掉——平衡灵敏度与误报。

正确喂狗时序 窗口超时未喂 禁止区喂狗

上手玩一下

初始化阶段的「三条命」

INIT 态里若一直没有效喂狗:第一次超时 → 软复位(电源不断,nRESET 拉低);第二次 → 硬复位(电源全断重上);第三次 → 直接进 FAILSAFE。MCU 固件一定要在启动后第一时间把喂狗流程跑通。