标题: 使用Arduino UNO的看门狗 [打印本页]

作者: zsy0425    时间: 2018-11-2 20:32
标题: 使用Arduino UNO的看门狗
看门狗定时器用避免电子设备出现故障造成死机,例如死循环。为此,看门狗作为一个物理定时器,在程序运行时不断的增加,并驱动一个中断, 如果达到某一个设定的值,就会复位微处理器。在正常操作下,定时器在程序流程中的定期设置为0, 但如果代码进入死循环,定时器复位不会发生,看门狗触发中断并重新启动。

    使用看门狗防止死机:Arduino为用户提供了方便操作的函数和宏,可以直接引入库:
#include <avr/wdt.h>    这个函数库提供了三个API函数供我们使用:
wdt_enable(timeout) //看门狗使能并设置超时时间
wdt_disable() //关闭
wdt_reset() //复位timeout可以使用wdt.h文件中定义的宏常量,也可以自定义时间;
通常情况下,需要在setup()函数中使能看门狗定时器,并在loop()中不断的喂狗防止溢出,官方给出的示例代码如下:
#include <avr/wdt.h>
void setup(){   
pinMode(13,OUTPUT);   
wdt_enable(WDTO_2S); //开启看门狗,并设置溢出时间为两秒}
void loop(){   
digitalWrite(13,HIGH);   
delay(100);   
digitalWrite(13,LOW);   
delay(100);   
wdt_reset(); //喂狗操作,使看门狗定时器复位}


作者: wenhongge    时间: 2018-11-3 22:22
学习了
作者: 柯尼赛格    时间: 2019-4-29 23:04
好厉害




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1