單片機(jī)程序中為什么要禁止看門狗
設(shè)置看門狗定時器的時候,必須先關(guān)閉它才能設(shè)置,否則在開啟狀態(tài)下設(shè)置看門狗定時器可能會出現(xiàn)問題。一般單片機(jī)和DSP、還有ARM芯片里設(shè)置內(nèi)部功能的時候,都是先關(guān)閉這個功能,再設(shè)置。中斷也是類似的,我們通常它把中斷全部關(guān)閉了,然后在程序里面進(jìn)一步設(shè)置。
本文引用地址:http://m.butianyuan.cn/article/201611/317092.htm要搞清楚關(guān)閉看門狗定時器的深層次原因,我們先得明白其用途:
它其實就是一個定時器,這個定時器溢出是會產(chǎn)生一個中斷響應(yīng),這個中斷響應(yīng)對應(yīng)的中斷服務(wù)就是跳回程序開頭,也就是復(fù)位。啟動看門狗后,要定時在程序中把看門狗的計數(shù)器清0,以防止它進(jìn)入中斷然后復(fù)位,這就叫做喂狗。
看門狗定時器常用在程序很容易跑飛的情況下(比如等待超時,意外進(jìn)入死循環(huán)等)——在啟動看門狗定時器的前提下,如果程序跑飛,不用怕,等計數(shù)器WTCNT溢出時,程序會自動復(fù)位。但在一般的程序中是不太可能會跑飛的,所以多數(shù)情況下我們關(guān)閉看門狗,是因為引入了看門狗之后就多了定時計數(shù)值處理的一些代碼,這增加了程序的復(fù)雜性。
評論