[技术问答]

新唐M051看门狗使用注意事项

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


奥德赛| | 2015-6-6 20:41 | 显示全部楼层
谢谢楼主的分享,经验讲的很明白

使用特权

评论回复
coke| | 2015-6-6 21:29 | 显示全部楼层
喂狗后不需要加锁吧、系统自动会锁上

使用特权

评论回复
Messi1999| | 2015-6-7 19:41 | 显示全部楼层
谢谢楼主,图文并茂,不错

使用特权

评论回复
gaoyang9992006| | 2015-6-11 17:43 | 显示全部楼层
即使程序跑飞了,中断模块和中断函数依然能够正常运行。这句话很对,所以喂狗要在主程序内喂

使用特权

评论回复
mintspring| | 2015-6-14 11:28 | 显示全部楼层
喂狗之前记得要对寄存器进行解锁操作unlock,喂狗之后要进行加锁lock。
为何好多例程都是解锁开头,然后枷锁。

使用特权

评论回复
598330983| | 2015-6-14 17:02 | 显示全部楼层
,全局变量countMs是在Timer0定时器1ms的中断函数中进行自加,在主函数中用查询方式来确认是否大概达到你要求的时间

使用特权

评论回复
玛尼玛尼哄| | 2015-6-15 14:12 | 显示全部楼层
看门狗都是要放在main函数的主循环里,一般需要来个定时器的变量,定时喂狗。

使用特权

评论回复
yiyigirl2014| | 2015-6-15 21:36 | 显示全部楼层
主循环喂狗这个我也会,中断里没法喂狗,喂了也白喂。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

821

帖子

5

粉丝