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