晚上的時候,接著學習了lpc2103的看門狗。
看門狗的概述:
看門狗包括乙個4分頻的預分頻器和乙個32位計數器,時鐘通過預分頻器輸入定時器,定時器遞減(與其他的定時器有區別哦)。定時器遞減的最小值為0xff,也就是如果你設定乙個小於0xff的值的話,系統裝入定時器的也將會是0xff。所以看門狗的最小間隔為(tpclk x 4 x256),最大間隔為(tpclk x 2的32次方 x 4)。看門狗的使用方法如下:
1.在wdtc暫存器中設定看門狗定時器的固定裝載值。
2.在wdmod暫存器中設定模式。
3.通過向wdfeed暫存器順序寫入0xaa和0x55啟動看門狗。
4,在看門狗計數器向下溢位之前應當再次餵狗以防止復位中斷。
當看門狗定時器向下溢位時,程式計數器將從0x00000000處開始執行,就跟外部復位一樣。可以檢查看門狗超時標誌(wdtof)來確定看門狗是否產生復位條件。wdtof必須由軟體清零。下圖是看門狗的內部結構方框圖。
接著介紹關於看門狗的相關暫存器
wdmod暫存器
看門狗的操作就是通過其中的wden位與wdreset位來控制的。
注意的是,一旦wden與wdreset置位。就無法使用軟體將其清零。這兩個標誌必須由外部復位和看門狗定時器溢位清零。另外,將wden置位只是使能wdt,但是並沒有啟動wdt,第一次餵狗才是啟動wdt。
wdtof 看門狗發生超時,看門狗超時標誌置位,該標誌由軟體清零。
wdint 看門狗發生超時,看門狗中斷標誌置位。任何復位都會使該位清零無法使用軟體清零。因此,發生看門狗中斷時,只能通過禁止看門狗中斷的方式返回。
wdtc
暫存器:
wdtc
暫存器決定看門狗超時值。當餵狗時序產生時,
wdtc
的內容重新裝入看門狗定時器。它是乙個
32位的定時器,最小值為
0xff。
wdfeed暫存器:
向該暫存器寫入0xaa,然後寫入0x55會使wdtc得值重新裝入看門狗定時器。如果看門狗通過wdmod使能,該操作還將啟動看門狗執行。在看門狗溢位之前,必須完成一次正確的餵狗時序。不正確餵狗時序之後的第二個pclk週期,看門狗復位/中斷被觸發。
wdtv暫存器:
wdtv暫存器專門用於讀取當前看門狗定時器的當前值。
最後說明關於看門狗的中斷。
只要啟動wdt,那麼wdt就不會停止,而且,wdt溢位後便會促發中斷,下圖是wdt中斷與向量中斷控制器的關係
需要說明的是,wdt的中斷標誌位無法通過軟體清零,只能拖過硬體復位清零。因此,當發生wdt中斷時,只能使能通過禁止wdt中斷的方式返回。
以上即是lpc2103看門狗。參考《easyarm2103教材》
每天都進步一點。
LPC2103之PLL暫存器
lpc2103之pll暫存器 pll操作相關的 暫存器 phase locked loop pll pll控制暫存器 define pllcon volatile unsigned char 0xe01fc080 pll控制暫存器 define pllcfg volatile unsigned ch...
開發學習記錄之看門狗驅動
在linux中學看門狗驅動,說實話就是坑爹的,因為一般上看門狗只有乙個,只能留給最需要的哪乙個,很少有裝置用到,不過既然提到了,那就剛好看看,在作業系統中時怎麼用寫看門狗的,有點坑爹的。就註冊乙個中斷,不想寫了,坑爹.想了想還是寫一點,可以複習一下 include include include i...
51微控制器之看門狗
include define uchar unsigned char define uint unsigned int sbit led1 p1 0 void delayms uint xms void main 例子二 迴圈中延時時長改變 include define uchar unsigned...