完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
单片机中所谓“看门狗”,本质上就是一个计时器,主要作用就是用来防止代码卡死或跑飞,在单片机的应用中十分重要,但使用时却是十分简单方便的。
按字面意思理解,跟看家护院的狗狗是一个意思,就是芯片内置的一个定时器,主要作用就是来保障程序正常运行的,所以叫做看门狗。知道了他就是个单纯的定时器后,就容易理解多了,定时器的唯一一个功能,就是定时,当定时器启动后,内部变量一直累加,当累加到设定值后,自己重启。所以当你在定时器的变量累加到设定值之前,手动把他的变量清零,让他重新累加,那他就一直到不了设定值,也就不会重启。而手动将他的变量置为0的操作,就被称之为“喂狗”。“看门狗”的运行就是用到了这个原理。 在使用“看门狗”时一般需要两步,第一步初始化看门狗,其实就是给看门狗设置计数时间,也就是变量的设定值,当看门狗达到这个设定值时,就会触发重启。但在程序的正常运行下,我们是不希望单片机重启的,所以这时候就需要第二步“喂狗”,也就是手动给计数器清零。所以我们一般在程序运行完的末尾加入“喂狗”操作。 当单片机初始化时,声明“看门狗”,看门狗内部计时器开始累加。然后程序开始运行,当程序第一遍运行结束后,执行喂狗操作,给看门狗计时器清零,然后程序重新运行。如果这时程序陷入一个死循环或者代码卡死,那么程序就不能正常运行完,而放在程序最末尾的“喂狗”函数就不会被执行,看门狗的定时器也就不会被重置,当看门狗累加到设定值后,则会触发重启,单片机重新运行。 对于看门狗的使用,还是非常重要的,尤其是对需要长时间工作的硬件设备,当单片机不正常工作了,看门狗则会自动重启代码,就会给后期维护节省很多麻烦。下面的代码就是看门狗在arduino里的运用,stm32的使用也一样。 /********* *不论是arduino还是stm32,使用看门狗都需要先加载库文件 **********/ #include 《avr/wdt.h》 //看门狗库文件 #define TIMEOUT WDTO_8S //设定喂狗时间8s 8s后如果收不到喂狗操作,看门狗触发重启。 //初始化函数 void setup() { wdt_enable(TIMEOUT);//开始看门狗 在代码初始化阶段启动看门狗 } //主循环 void loop() { //需要运行的主程序 …… wdt_reset();//喂狗 在程序运行一遍之后执行喂狗操作 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 03:57 , Processed in 0.788338 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号