Arduino
回帖(1)
2021-9-23 14:33:51
看门狗定时器用避免电子设备出现故障造成死机,例如死循环。为此,看门狗作为一个物理定时器,在程序运行时不断的增加,并驱动一个中断, 如果达到某一个设定的值,就会复位微处理器。在正常操作下,定时器在程序流程中的定期设置为0, 但如果代码进入死循环,定时器复位不会发生,看门狗触发中断并重新启动。
使用看门狗防止死机:Arduino为用户提供了方便操作的函数和宏,可以直接引入库:
#include 这个函数库提供了三个API函数供我们使用:
wdt_enable(timeout) //看门狗使能并设置超时时间
wdt_disable() //关闭
wdt_reset() //复位timeout可以使用wdt.h文件中定义的宏常量,也可以自定义时间;
通常情况下,需要在setup()函数中使能看门狗定时器,并在loop()中不断的喂狗防止溢出,官方给出的示例代码如下:
#include
void setup(){
pinMode(13,OUTPUT);
wdt_enable(WDTO_2S); //开启看门狗,并设置溢出时间为两秒}
void loop(){
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
wdt_reset(); //喂狗操作,使看门狗定时器复位}
看门狗定时器用避免电子设备出现故障造成死机,例如死循环。为此,看门狗作为一个物理定时器,在程序运行时不断的增加,并驱动一个中断, 如果达到某一个设定的值,就会复位微处理器。在正常操作下,定时器在程序流程中的定期设置为0, 但如果代码进入死循环,定时器复位不会发生,看门狗触发中断并重新启动。
使用看门狗防止死机:Arduino为用户提供了方便操作的函数和宏,可以直接引入库:
#include 这个函数库提供了三个API函数供我们使用:
wdt_enable(timeout) //看门狗使能并设置超时时间
wdt_disable() //关闭
wdt_reset() //复位timeout可以使用wdt.h文件中定义的宏常量,也可以自定义时间;
通常情况下,需要在setup()函数中使能看门狗定时器,并在loop()中不断的喂狗防止溢出,官方给出的示例代码如下:
#include
void setup(){
pinMode(13,OUTPUT);
wdt_enable(WDTO_2S); //开启看门狗,并设置溢出时间为两秒}
void loop(){
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
delay(100);
wdt_reset(); //喂狗操作,使看门狗定时器复位}
举报
更多回帖