# 嵌入式看门狗的"内外"之别与核心认知

### 核心作用
看门狗的本质是一个独立的硬件递减定时器。它的终极使命是：当程序跑飞或死锁时，强制硬件复位 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 一起停止工作。


相关：[[i2c-bus-protocol|i2c-bus-protocol]]
