完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.如何决定看门狗的时间?
是根据程序执行一周所用的时间来确定个大概吗? 然后在while循环里喂一次狗? 2.独立看门狗和窗口看门狗各自的应用场合有哪些? 查了些资料,知道独立看门狗只有下限,有独立的40K左右时钟源;软件看门狗,有下限和上限,只有在下限和上限区间内,才能正常喂狗。 |
|
相关推荐
11个回答
|
|
在循环里面 喂狗还是在定时器 里面喂狗 这个问题谈论了很久了。
1. 在循环里面喂狗 时间不固定 可能比较浪费时间 是MCU 的效率比较低 。 2. 在定时器里面喂狗,有可能达不到喂狗的效果,因为有可能程序跑到一个死循环里面了,但是能够进入到定时器中断里面喂狗。 这些纯属于个人的意见,高手勿喷!各抒己见而已!!!讨论讨论!!! |
|
|
|
当然是根据你程序运行的时间来算,比如你的while循环中有个任务大概运行10ms,超过10MS说明已经跑飞了,这个时候就把看门狗设置为10ms,如果跑飞了就不能喂狗了,然后就重启了
|
|
|
|
|
|
|
|
二楼回答正确
|
|
|
|
|
|
|
|
关键在于你的“HAL_IWDG_Refresh(&hiwdg);”前面的省略号是什么代码,是否是固定延时的语句。 我的做法是加载FreeRTOS,用单独的一个任务喂狗: /* StartTask10 function */ void StartTask10(void const * argument) { /* USER CODE BEGIN StartTask10 */ /* Infinite loop */ for(;;) { osDelay(500); HAL_IWDG_Refresh(&hiwdg); // 每隔 500 毫秒喂一次看门狗 看门狗设置 1000 毫秒重启 } /* USER CODE END StartTask10 */ } |
|
|
|
看门狗不要用定时器来喂,某些程序跑飞了,但定时器硬件依然可以工作。最好在大循环里面喂。
|
|
|
|
mosen137 发表于 2018-11-19 07:20 跑实时操作系统的话,有任务调度的原因。 只要其中一个任务跑死了,就跑不到另外一个任务,所以我这么做。 调试程序的时候,主任务出问题,确实会因为没喂狗而引起MCU重启。 |
|
|
|
|
|
|
|
同意2楼说法
|
|
|
|
用ucos有时候会进入硬件中断,这时候定时器中断还是能进入喂狗,但是任务里面就无法再喂狗了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1950 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1809 浏览 3 评论
4389 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1960 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2463 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:30 , Processed in 0.781592 second(s), Total 64, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号