嵌入式看门狗的"内外"之别与核心认知
核心作用
看门狗的本质是一个独立的硬件递减定时器。它的终极使命是:当程序跑飞或死锁时,强制硬件复位 MCU。
坑点预警:绝对不能在定时器中断 ISR 里喂狗(中断活着不代表主逻辑活着)。必须在主循环或任务调度器中确认所有关键任务都轮询完毕后,再执行喂狗。
功能细分
- 独立看门狗 (IWDG):监控宏观死机(超时前喂就行)。
- 窗口看门狗 (WWDG):监控任务执行周期(喂太早或喂太晚都会复位,防止程序跳过关键运算)。
"内/外"看门狗的物理含义
这里的"内外"不是指功能(独立/窗口),而是指硬件电路的物理位置。
- 内部看门狗:集成在 MCU 芯片内部的外设模块(靠内部低速 RC 时钟驱动)。
- 外部看门狗:单独焊接在 PCB 上的实体芯片(如 MAX706),通过 GPIO 喂狗,复位脚直连 MCU 的 NRST 引脚。
为什么必须区分内外?
| 对比维度 | 内部看门狗 | 外部看门狗 |
|---|---|---|
| 时钟源 | 依赖 MCU 内部 RC 振荡器(主晶振停振时,它也可能罢工)。 | 拥有独立时钟源,完全不依赖 MCU 内部时钟。 |
| 极端失效 | 无法自救。若 MCU 内核物理锁死或内部 LDO 逻辑混乱,看门狗本身也会停止计数。 | 物理强制复位。即使 MCU 内部逻辑完全错乱,只要外部芯片供电正常,到点即通过引脚强行拉低 NRST 重启。 |
| 附加功能 | 通常无。 | 普遍兼任电源电压监控 (POR),欠压时主动复位,防止 MCU 逻辑混乱。 |
工程选型与最佳实践
选型原则:普通消费电子(家电)用内部狗即可;汽车、医疗、工控核心设备必须上外部狗。
顶级防御策略(内外双狗):
- 内部狗:监控操作系统任务调度超时(反应快,毫秒/微秒级)。
- 外部狗:作为最后一道物理防线(超时设得很长,如 1.6 秒),一旦触发,说明软件逻辑已彻底失控,执行硬件硬复位。
一句话总结
内部狗防软件 Bug,外部狗防硬件物理失效;内部狗可能会跟着 MCU 一起"死",只有外部独立芯片才能做到"死而复生"的物理强制重启。 🐕
补充
- 时钟源精确化:对比表笼统写"内部 RC"只对 IWDG 精确(STM32 中由 LSI 低速内部 RC 驱动);WWDG 的时钟来自 APB 分频,与主系统同源——正是同源才能检测"任务执行周期"异常,代价是主时钟失效时它也失效,与"内部狗依赖 MCU 时钟"的结论一致。
- "内部 LDO 逻辑混乱"更准确的说法:MCU 内部供电/逻辑整体失效时,内部狗失去时钟与计数能力,随 MCU 一起停止工作。