请教一个有趣的问题:在UCOSII中,还需要使用看门狗吗?如果要用,可怎么去喂这条狗?

2019-07-21 00:35发布

 大家知道,UCOSII中的各项执行任务都是个死循环,各项任务的切换都是靠自身的优先级来进行;

 而看门狗是在正常执行程序中,去喂它,使它不会溢出,而产生复位动作。但如果程序跑飞了,进入死循环,没有在一定的时间去喂它,

就会产生复位动作,使程序重新启动初始化,恢复正常工作。可在UCOSII中,各个任务本身就是个死循环,它们自己就有个专用震荡器,这还用

使用看门狗吗?如果要用,这条狗怎么去喂它,是在各项任务里,添一条喂狗指令?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
dong
1楼-- · 2019-07-22 01:28
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-22 01:50
 精彩回答 2  元偷偷看……
toddchen
3楼-- · 2019-07-22 05:36
回复【18楼】toddchen:

窗口看门狗的窗口(最小最大超时表)分为四档:
最小:  113us,  最大:  7.28ms
最小:  227us,  最大:  14.56ms
最小:  455us,  最大:  29.12ms
最小:  910us,  最大:  58.25ms
根据极值条件,如果按却换频率3到5ms,支持十几个任务是没问题的,
具体窗口的上下限大小,需要实际测量每个任务的时间来调整。

-----------------------------------------------------------------------------------------------------------

 谢谢施教!

  其他朋友继续参入讨论啊。
正点原子
4楼-- · 2019-07-22 05:37
没人再来讨论?
dong
5楼-- · 2019-07-22 07:12
回复【21楼】sjEE:
---------------------------------
有作用
toddchen
6楼-- · 2019-07-22 08:46
回复【22楼】正点原子:
---------------------------------
我看完上面的帖子还是没明白看门狗在UCOS中该怎么用,
在实际的项目中,稳定性是最重要的(要不卖出去天天叫你修),所以看门狗就必不可少了,
说到这,我不得不提问一下关于LWIP的 数据传输中,中断是不能开启(打断数据传输会导致传输失败),假设传输时间超过看门狗设定最大值了,
那岂不是只要有传输就不断复位了?

希望原子哥能详细讲解下看门狗在UCOS,LWIP及一些实际项目中的用法。

一周热门 更多>