看門狗定時器用避免電子設備出現故障造成死機,例如死循環。為此,看門狗作為一個物理定時器,在程序運行時不斷的增加,并驅動一個中斷, 如果達到某一個設定的值,就會復位微處理器。在正常操作下,定時器在程序流程中的定期設置為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(); //喂狗操作,使看門狗定時器復位}
|