關(guān)于A(yíng)VR單片機(jī)的看門(mén)狗
看門(mén)狗這個(gè)東西以前沒(méi)接觸過(guò)……
本文引用地址:http://2s4d.com/article/201611/323038.htm理解它費(fèi)了一點(diǎn)周折。
使用它的復(fù)位MCU的功能實(shí)現(xiàn)LED的閃爍。
準(zhǔn)備工作是設(shè)定WDT的超時(shí)時(shí)間(如1s)
首先使能看門(mén)狗(wdt_enable),然后喂狗(wdt_reset),再延時(shí)燈的閃爍時(shí)間(delay=0.5s),使燈亮(SET_LED);再用一個(gè)恰當(dāng)?shù)谋容^長(zhǎng)的延時(shí)(delay>0.5s)餓死狗。之后MCU重啟,如此往復(fù)。
(1)延時(shí)可以調(diào)用庫(kù)函數(shù),還可以使用定時(shí)器;
(2)SET_LED; while(1)
(3)軟件看門(mén)狗和硬件看門(mén)狗。軟件看門(mén)狗可以用wdt_disable來(lái)禁掉。而硬件看門(mén)狗不能。AVR可以通過(guò)修改熔絲位來(lái)分別實(shí)現(xiàn)軟硬看門(mén)狗。
(4)wdt_enable(timeout)的參數(shù)timeout表示看門(mén)狗的超時(shí)時(shí)間,即timeout時(shí)間內(nèi)不喂狗,狗就會(huì)叫,mcu就會(huì)復(fù)位。
=================================================================================================
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define SET_LED PORTA&=0XFE //PA0輸出低電平,黃燈亮
#define CLR_LED PORTA|=0X01
void DelayMs(uint ms)
{
}
int main(void)
{
}
評(píng)論