相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

在Arduino中使用看門狗定時器
發(fā)布時間:2022-03-12 08:41 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 3589
看門狗(Watch Dog)是一個獨(dú)立的定時器,當(dāng)你開啟看門狗后,需要在程序中看門狗定時器溢出前,對其進(jìn)行 喂狗(復(fù)位)操作,否則看門狗會強(qiáng)制你的單片機(jī)重啟,從頭運(yùn)行程序。

雖然Arduino核心庫并未提供看門狗相關(guān)的API,但AVRGCC提供了相應(yīng)的API支持,同樣簡單易用。
需要注意的是Arduino bootloader并不支持看門狗,如果你直接使用看門狗定時器,可能會卡死在bootloader中。如果要使用看門狗建議使用ISP下載器直接下載程序。

在使用該API前,你需要調(diào)用相應(yīng)的頭文件wdt.h:
[mw_shl_code=c,true]#include <avr/wdt.h>[/mw_shl_code]

在wdt.h中,提供了3個看門狗API:
[mw_shl_code=c,true]wdt_enable(timeout) //看門狗使能 并設(shè)置超時時間
wdt_disable() //看門狗禁止
wdt_reset() //看門狗復(fù)位[/mw_shl_code]
wdt_enable(timeout) 中timeout可使用如下常量:
序號
常量
定義
1
WDTO_15MS
看門狗定時器15ms超時
2
WDTO_30MS
看門狗定時器30ms超時
3
WDTO_60MS
看門狗定時器60ms超時
4
WDTO_120MS
看門狗定時器120ms超時
5
WDTO_250MS
看門狗定時器250ms超時
6
WDTO_500MS
看門狗定時器500ms超時
7
WDTO_1S
看門狗定時器1S超時
8
WDTO_2S
看門狗定時器2S超時
9
WDTO_4S
看門狗定時器4S超時
10
WDTO_8S
看門狗定時器8S超時


通常情況下,在arduino中使用該API,你需要在setup中使能看門狗定時器,并在loop中按實(shí)際需要進(jìn)行喂狗操作。示例代碼如下:
[mw_shl_code=cpp,true]
#include <avr/wdt.h>
void setup()
{
   pinMode(13,OUTPUT);
   wdt_enable(WDTO_2S); //開啟看門狗,并設(shè)置溢出時間為兩秒
}

void loop()
{
   digitalWrite(13,HIGH);
   delay(100);
   digitalWrite(13,LOW);
   delay(100);
   wdt_reset(); //喂狗操作,使看門狗定時器復(fù)位
}[/mw_shl_code]
Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動化 影視動畫 程序開發(fā) 網(wǎng)頁設(shè)計(jì) 會計(jì)課程 興趣成長 AIGC