[技术问答] 新唐M051看门狗使用注意事项

[复制链接]
1501|8
 楼主| maudlu 发表于 2025-3-20 20:32 | 显示全部楼层 |阅读模式

1、不能够在中断函数中喂狗,因为即使程序跑飞了,中断模块和中断函数依然能够正常运行,如果在中断函数里面喂狗,即使跑飞,也有可能因为在中断函数(比如定时器中断)中喂了狗而不产生复位信号,因为外设的运行有时可以独立于程序。
2、喂狗之前记得要对寄存器进行解锁操作unlock,喂狗之后要进行加锁lock。
3、关于看门狗寄存器的所有操作都要有解锁(unlock)的操作,为了方便区分起见,最好对看门狗初始化之前就要解锁(unlock),初始化后加锁(lock)。关于看门狗的中断函数也要做同样的操作,先解锁(unlock),然后清除相关标志位,保证操作有效。
4、在主程序的每一个处理流程都要适当添加一些喂狗指令
5、对于长延迟的函数,要注意喂狗方式,假如你在进行某个操作1.8秒,如下图,全局变量countMs是在Timer0定时器1ms的中断函数中进行自加,在主函数中用查询方式来确认是否大概达到你要求的时间,以下是每50ms喂狗一次,因为在看门狗初始化时,看门狗定时器是102.4ms溢出一次。
8143167dc0ac085def.png

1613867dc0ac18830f.png
治愈糖果屋 发表于 2025-3-21 21:43 | 显示全部楼层
对于看门狗的中断函数,文中提到也需要解锁和加锁操作,那这个操作和主程序中的解锁加锁操作有什么区别吗?
暖心小太阳 发表于 2025-3-22 17:34 | 显示全部楼层
在主程序中添加喂狗指令的频率有没有一个具体的推荐值呢?
星辰伴梦 发表于 2025-3-22 20:08 | 显示全部楼层
对于长延迟函数,那有没有一些通用的策略或者最佳实践可以分享呢?
狗啃模拟 发表于 2025-4-25 17:32 | 显示全部楼层
确保在主程序逻辑中进行喂狗操作,以保证看门狗及时触发复位。
zhuomuniao110 发表于 2025-4-26 20:28 | 显示全部楼层
这是用什么开发的,高亮代码挺好看
迷雾隐者 发表于 2025-4-26 21:47 | 显示全部楼层
非常实用,之前没注意到中断函数不能喂狗,学到了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

1686

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部