看门狗(WDT)失效本质是系统失去最后一道防死锁屏障,后果取决于应用场景。最严重的是安全关键系统(如汽车ECU、医疗设备):程序跑飞后持续输出错误控制信号,可能引发物理事故(如电机堵转、刹车误动作)。其次是数据完整性破坏,例如固件升级中途死循环,导致Flash写入半截,设备变砖。实操建议:1)硬件上选用独立时钟源(如内部RC)的WDT,避免主晶振停振时WDT也失效;2)软件中定期喂狗,但要在主循环和中断中分散喂,防止单点卡死;3)增加WDT失效检测,例如通过读WDT状态寄存器或外部监控芯片(如TPS3813)形成冗余。若WDT本身损坏,可考虑用定时器中断+GPIO外部复位电路做备份。
```c
// 喂狗示例:分散在任务中
void task1(void){ wdt_feed(); /*...*/ }
void task2(void){ wdt_feed(); /*...*/ }
```
mcuku 阿沐 · 2026-08-17