LPC2103學(xué)習(xí)之看門狗
看門狗的概述:
看門狗包括一個4分頻的預(yù)分頻器和一個32位計數(shù)器,時鐘通過預(yù)分頻器輸入定時器,定時器遞減(與其他的定時器有區(qū)別哦)。定時器遞減的最小值為0XFF,也就是如果你設(shè)置一個小于0xFF的值的話,系統(tǒng)裝入定時器的也將會是0XFF。所以看門狗的最小間隔為(Tpclk x 4 x256),最大間隔為(Tpclk x 2的32次方 x 4)??撮T狗的使用方法如下:
1.在WDTC寄存器中設(shè)置看門狗定時器的固定裝載值。
2.在WDMOD寄存器中設(shè)置模式。
3.通過向WDFEED寄存器順序?qū)懭?XAA和0X55啟動看門狗。
4,在看門狗計數(shù)器向下溢出之前應(yīng)當(dāng)再次喂狗以防止復(fù)位中斷。
當(dāng)看門狗定時器向下溢出時,程序計數(shù)器將從0x00000000處開始運行,就跟外部復(fù)位一樣。可以檢查看門狗超時標(biāo)志(WDTOF)來確定看門狗是否產(chǎn)生復(fù)位條件。WDTOF必須由軟件清零。下圖是看門狗的內(nèi)部結(jié)構(gòu)方框圖。
接著介紹關(guān)于看門狗的相關(guān)寄存器
WDMOD寄存器
看門狗的操作就是通過其中的WDEN位與WDRESET位來控制的。
注意的是,一旦WDEN與WDRESET置位。就無法使用軟件將其清零。這兩個標(biāo)志必須由外部復(fù)位和看門狗定時器溢出清零。另外,將WDEN置位只是使能WDT,但是并沒有啟動WDT,第一次喂狗才是啟動WDT。
WDTOF 看門狗發(fā)生超時,看門狗超時標(biāo)志置位,該標(biāo)志由軟件清零。
WDINT 看門狗發(fā)生超時,看門狗中斷標(biāo)志置位。任何復(fù)位都會使該位清零無法使用軟件清零。因此,發(fā)生看門狗中斷時,只能通過禁止看門狗中斷的方式返回。
WDTC寄存器:
WDTC寄存器決定看門狗超時值。當(dāng)喂狗時序產(chǎn)生時,WDTC的內(nèi)容重新裝入看門狗定時器。它是一個32位的定時器,最小值為0xFF。
WDFEED寄存器:
向該寄存器寫入0XAA,然后寫入0X55會使WDTC得值重新裝入看門狗定時器。如果看門狗通過WDMOD使能,該操作還將啟動看門狗運行。在看門狗溢出之前,必須完成一次正確的喂狗時序。不正確喂狗時序之后的第二個pclk周期,看門狗復(fù)位/中斷被觸發(fā)。
WDTV寄存器:
WDTV寄存器專門用于讀取當(dāng)前看門狗定時器的當(dāng)前值。
最后說明關(guān)于看門狗的中斷。
只要啟動WDT,那么WDT就不會停止,而且,WDT溢出后便會促發(fā)中斷,下圖是WDT中斷與向量中斷控制器的關(guān)系
需要說明的是,WDT的中斷標(biāo)志位無法通過軟件清零,只能拖過硬件復(fù)位清零。因此,當(dāng)發(fā)生WDT中斷時,只能使能通過禁止WDT中斷的方式返回。
以上即是LPC2103看門狗。參考《EasyARM2103教材》
評論