
程序卡死了,怎么办?
有人在旁边,还能手动重启。
可设备要是长期无人值守呢?

这时候,就需要一个
能“盯着程序”的东西——
WDT 看门狗。
程序正常,按时“喂狗”。
程序真卡死了,
超时就自动复位。
这期继续用 立创·庐山派 K230-CanMV / Lite-K230D-CanMV,看看“喂狗”到底是什么,再实际跑一遍:
正常喂狗不复位,
停止喂狗后自动重启。
为什么一停喂,
过几秒开发板就自己重启了?
往下看~
WDT,就是程序的“安全员”
WDT 全称 Watchdog Timer,也就是看门狗定时器。
平时程序正常运行,就定期告诉它:
“我还好好的。”
这个动作就叫——喂狗。
如果程序卡死,长时间没再喂狗,
WDT 等到超时后,就会让系统重新启动。
具体怎么工作的,直接看图。


“喂狗”也不能乱喂
看到这里可能会想:
那我定时喂狗,不就行了?
还真不行。
如果主程序已经卡住,但另一个 Timer 还在一直喂狗,
WDT 就会以为:
“没事,程序还活着。”
结果真正的故障反而发现不了。
所以正确的做法是:
关键任务正常跑完,再喂狗。

正常喂和停止喂以后会发生什么,
下面这张图更直观。

先测试“正常喂狗”
第一次运行,先别急着让开发板真的重启。
先保持 安全模式。
程序每隔 1 秒喂一次狗,
连续喂 5 次后主动停止 WDT。
正常情况下:
开发板不会重启,IDE 也不会断开。

确认这一步没问题以后,
再打开复位测试。
程序先正常喂狗 3 次,
然后——
故意不喂了。
接下来就交给 WDT。

不喂了,开发板真的会重启吗?
会。
停止喂狗以后,
WDT 的倒计时还在继续。
到达超时时间后,
开发板自动复位,IDE 会短暂断开。


这样整个过程就很清楚了:
正常运行 → 喂狗 → 停止喂狗 → 超时 → 自动重启
这也就是 WDT 最核心的作用。
5 秒超时,别真等到第 5 秒
这次实验设置的是 5 秒超时。
实际项目里,别等到最后一刻才喂狗。
网络、文件读写、系统负载,都可能让程序临时慢一点。
所以:
喂狗时间要和超时时间留出余量。
另外,复位测试不要设置成开机自启。
不然可能变成:
开机 → 超时 → 重启 → 再开机……

遇到 IDE 断开、反复重启等问题,直接看下面这张图排查。

最后记住:
小问题先让程序自己处理。
真的卡死了,再让 WDT 兜底。

本期《庐山派 WDT 看门狗使用教程》已同步更新至立创开发板 B 站账号。
视频链接:
https://www.bilibili.com/video/BV1T9e16YEfY

视频里会实际演示:
正常喂狗、停止喂狗,以及 WDT 触发复位的整个过程。
第一次接触 WDT 的朋友,可以直接跟着跑一遍。
欢迎大家把真实遇到的问题留在评论区,说不定你的问题,会成为我们下一期教程的选题!


