ARM學(xué)習(xí)之---看門狗(WatchDog)
WatchDog,中文為"看門狗",老外起的名字有時很有趣也很貼切,這些從事技術(shù)的老外對生活總是充滿了樂觀的態(tài)度,把工作當(dāng)成樂趣而不要認(rèn)為他是痛苦的事情,這樣才能把工作做好.否則就不要去做,天天做自己不喜歡的事情,其結(jié)果是很痛苦的.
本文引用地址:http://www.ex-cimer.com/article/201608/295115.htm一樣,我總是喜歡用自己的理解而不是無聊的術(shù)語來講解我所理解的東西.
WatchDog是為了能夠防止程序跑飛而使用的一種東西.如果你的程序沒有跑飛,那么你的程序會定時的去喂看門狗,如果你的程序跑飛了,那么就不會再去喂狗了,如果超過了喂狗的時間,那么狗就會自己生成一個信號來重新reset你的CPU,重新開始.這是一種在很重要的情況下防止系統(tǒng)跑飛的一種方法.一般的程序也許不需要,但在特殊的情況下可能會需要這種機(jī)制.
我們在上一篇的圖中,第一個地址段就是為看門狗設(shè)置的.
可以看一下實際的電路.SP706的(-RST)輸出低電平時會使LPC2478的CPU復(fù)位.對于PFI,-PFO兩個管腳來講,當(dāng)PFI的電壓監(jiān)控輸入低于1.25V時,-PF0會置為LOW.但因為PFI在這里接地,-PFO置空,因此沒有使用這一功能.
因為-MR,-WDO相連接,因此當(dāng)Vcc低于復(fù)位值,-RST將輸出200ms的LOW脈沖.并且如果WDI輸出保持高電平1.6s時,看門狗超時,-WDO將置為LOW,也就將-MR置低,一旦-MR置低,-RST便置低,也就將CPU復(fù)位.
當(dāng)WDI超過1.6s沒有來脈沖,也會導(dǎo)致-WDO輸出低電平,同理也會是-RST產(chǎn)生復(fù)位信號.
在文檔中介紹超時時間是1.6s,電路中標(biāo)識為1.2s.我也有點不理解,沒有細(xì)研究其原因.而控制看門狗的APB寄存器大概是這樣的Name Description Access ResetValue[1] Address
WDMOD Watchdog mode register. This register contains
the basic mode and status of the Watchdog Timer. R/W 0 0xE000 0000
WDTC Watchdog timer constant register. This register
determines the time-out value. R/W 0xFF 0xE000 0004
WDFEED Watchdog feed sequence register. Writing 0xAA
followed by 0x55 to this register reloads the
Watchdog timer with the value contained in WDTC. WO NA 0xE000 0008
WDTV Watchdog timer value register. This register
reads out the current value of the Watchdog timer. RO 0xFF 0xE000 000C
WDCLKSEL Watchdog clock source selection register. R/W 0 0xE000 0010
讀書的時候,老師總是要求學(xué)生學(xué)好英語,學(xué)理工科的孩子總是不喜歡,沒辦法,自己看吧.
看門狗我們也沒有必要把他研究得那么明白,講這東西只是講個道理,我也懶得把他解釋得完全正確,如果中間講的有問題,大家包涵,以便大家能夠理解硬件電路,寄存器以及程序之間的關(guān)系.實際上,我們按照參考設(shè)計去做就可以了,在應(yīng)用中,改動看門狗的情況應(yīng)該不多.
評論