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