合宙LuatOS的个人空间 https://www.eechina.com/space-uid-176273.html [收藏] [复制] [RSS]

博客

嵌入式防崩溃核心:看门狗定时器原理与实战应用全攻略!

已有 387 次阅读2025-8-19 14:25 |个人分类:4G模组| 物联网, 单片机, 4G模块, 通讯模组, 嵌入式硬件

如何让嵌入式系统在异常中快速恢复?内部看门狗定时器通过独立硬件电路实现“监督-复位”闭环。原理上,它依赖定时中断监测程序心跳;实战中,需结合具体芯片手册配置寄存器,并处理喂狗信号冲突问题,本文详细拆解。

本文将分享正常运行情况和模拟故障场景两个示例,带你快速了解看门狗定时器在嵌入式系统中的运用要点。

wKgZO2ieuySATqsJAAedFxcTg-Y462.png

最新源码及实操教程详见:https://docs.openluat.com/air8101/luatos/app/common/wdt/
 

注意:模组/芯片的内部硬狗,能解决绝大多数情况下的死机问题。但如果有要求非常高的场景, 依然建议外挂硬件,然后通过gpio/i2c定时喂狗。


一、正常运行情况


LuatOS的看门狗wdt操作库,为嵌入式系统提供了关键的系统稳定性保障机制。

在正常运行情况下,示例代码会初始化看门狗库,并设置超时时间和喂狗周期。然后创建一个任务,该任务会定期喂狗,以防止看门狗定时器超时。如果看门狗定时器超时,系统将自动重启。


1.1  完整示例代码

如下图,初始化wdt库,设置超时时间为9秒。设置一个定时器每3秒喂一次看门狗,确保设备在正常运行的情况下不会重启;若发生软件崩溃或硬件故障,最多18秒后将自动重启设备。

wKgZPGievnuAe_5lAASFKZFbkEQ845.png


1.2 示例运行结果

Air8101核心板/开发板通过LuaTools烧录内核固件和demo脚本代码。烧录成功后开机运行,通过LuaTools日志查看运行结果。

设备启动,程序正常运行:

wKgZO2ievq-AZRJZAAOxbBF4Ve8292.png


二、添加死循环模拟故障场景 


我们在原有正常运行示例代码中创建了一个新的任务,命名为fault_task,它将进入一个死循环。由于这个新任务阻断了喂狗操作,设备将在超时后自动重启。这样,我们就可以有效地模拟看门狗的超时情况。

创建一个新的任务来模拟故障场景:

wKgZPGievueADPQXAACE4l33z7U318.png


2.1 完整示例代码

wKgZPGievxGAHJYTAAIzwBTUkFQ442.png

 

wKgZPGievyOAPMW9AABtWq0KYJY927.png


2.2 示例运行结果
 

Air8101核心板/开发板通过LuaTools烧录内核固件和demo脚本代码。烧录成功后开机运行,通过LuaTools日志查看运行结果。

看门狗超时被触发,系统崩溃导致重启:

wKgZO2iev0-AUx1EAAJiJGIFTEE273.png


今天的内容就分享到这里了~


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部