01IWDG
1.1獨立看門狗簡介
IWDG(Independentwatchdog)獨立看門狗,可以用來檢測并解決由于軟件錯誤導致的故障,當計數(shù)器到達給定的超時值時,會觸發(fā)一個中斷或產(chǎn)生系統(tǒng)復位。
獨立看門狗的時鐘是它專用的低速時鐘(LSI),所以它能保持工作及時主時鐘出現(xiàn)問題。窗口看門狗的時鐘是有APB1時鐘分頻得到得到,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。
IWDG 最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。WWDG 最適合那些要求看門狗在精確計時窗口起作用的應用程序。
1.2獨立看門狗的特點
①自由運行遞減計數(shù)器
②時鐘來自通過獨立的RC振蕩器(可以工作在待機和停止模式下)
③當向下計數(shù)器值達到0時,會產(chǎn)生復位(如果看門狗已經(jīng)激活)
1.3獨立看門狗功能描述
上圖紅框顯示,看門狗功能由VDD電壓域供電,所以在停止模式和待機模式下仍能工作。
向關鍵字寄存器(IWDG_KR)寫入0XCCCC,獨立看門狗就會啟動,計數(shù)器開始下降從復位值0XFFF。當計數(shù)器值到達0,會產(chǎn)生一個復位信號(獨立看門狗復位)。
無論何時向關鍵字寄存器寫入0XAAAA,IWDG_RLR的數(shù)值會重載進計數(shù)器,避免看門狗復位。
1.4硬件看門狗
如果通過器件選項位使能“硬件看門狗”功能,上電時將自動使能看門狗;如果在計數(shù)器計數(shù)結束前,若軟件沒有向關鍵字寄存器寫入相應的值,則系統(tǒng)會產(chǎn)生復位。
1.5寄存器訪問保護
IWDG_PR 和IWDG_RLR 寄存器具有寫訪問保護。若要修改寄存器,必須首先對IWDG_KR寄存器寫入代碼0x5555。而寫入其他值則會破壞該序列,從而使寄存器訪問保護再次生效。這意味著重裝載操作(即寫入0xAAAA)也會啟動寫保護功能。
狀態(tài)寄存器指示預分頻值和遞減計數(shù)器是否正在被更新。
1.6調(diào)試模式
當微控制器進入調(diào)試模式時(Cortex?-M3 內(nèi)核停止),IWDG 計數(shù)器會根據(jù)DBG 模塊中的DBG_IWDG_STOP 配置位選擇繼續(xù)正常工作或者停止工作。
下圖是LSI在不同分頻情況下IWDG超時周期的最小值和最大值。
02WWDG
2.1簡介
窗口看門狗(Windowwatchdog)通常被用來監(jiān)測,由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產(chǎn)生的軟件故障。除非遞減計數(shù)器的值在T6 位變成0 前被刷新,看門狗電路在達到預置的時間周期時,會產(chǎn)生一個MCU 復位。如果在遞減計數(shù)器達到窗口寄存器值之前刷新控制寄存器中的7 位遞減計數(shù)器值,也會產(chǎn)生MCU 復位。這意味著必須在限定的時間窗口內(nèi)刷新計數(shù)器。
2.2窗口看門狗主要特點
①可編程自由向下計數(shù)器
②復位條件,激活看門狗的情況下,當遞減計數(shù)器值小于0x40 時復位;在窗口之外重載遞減計數(shù)器時復位。
③提前喚醒中斷(EWI):當遞減計數(shù)器等于0x40 時觸發(fā)(如果已使能且看門狗已激活)。
2.3窗口看門狗功能說明
如果窗口看門狗啟動(WWDG_CR寄存器的WDGA位置1),7位向下計數(shù)器從0X40向0x3F滾動(T6已經(jīng)清零),會導致一個復位。如果軟件重載計數(shù)器,當計數(shù)器值大于窗口所存儲的值時,就會產(chǎn)生復位。
應用程序必須在正常操作期間寫WWDG_CR寄存器去組織MCU復位。這個操作必須發(fā)生在計數(shù)器值小于窗口寄存器值。窗口寄存器值存儲在WWDG_CR寄存器,必須在0XFF和0XC0之間。
使能窗口看門狗
復位之后,窗口寄存器經(jīng)常是禁止的。通過設置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了通過復位。
控制向下計數(shù)器
遞減計數(shù)器處于自由運行狀態(tài):即使禁止看門狗,遞減計數(shù)器仍繼續(xù)遞減計數(shù)。當使能看門狗時,必須將T6 位置1,以防止立即復位。
T[5:0] 位包含了看門狗產(chǎn)生復位之前的計時數(shù)目;復位前的延時時間在一個最小值和一個最大值之間變化,這是因為寫入WWDG_CR 寄存器時,預分頻值是未知的。配置寄存器(WWDG_CFR) 包含窗口的上限:為防止發(fā)生復位,當遞減計數(shù)器的值低于窗口寄存器值且大于0x3F 時必須重載。
注意:可使用T6 位產(chǎn)生軟件復位(將WDGA 位置1 并將T6 位清零)。
看門狗中斷高級特性
如果在產(chǎn)生實際復位之前必須執(zhí)行特定的安全操作或數(shù)據(jù)記錄,則可使用提前喚醒中斷(EWI)。通過設置WWDG_CFR 寄存器中的EWI 位使能EWI 中斷。當遞減計數(shù)器的值為0x40時,將生成EWI 中斷。在復位器件之前,可以使用相應的中斷服務程序(ISR) 來觸發(fā)特定操作(例如通信或數(shù)據(jù)記錄)。
在某些應用中,可以使用EWI 中斷來管理軟件系統(tǒng)檢查和/或系統(tǒng)恢復/功能退化,而不會生成WWDG 復位。在這種情況下,相應的中斷服務程序(ISR) 可用來重載WWDG 計數(shù)器以避免WWDG 復位,然后再觸發(fā)所需操作。
通過將0 寫入WWDG_SR 寄存器中的EWIF 位來清除EWI 中斷。
2.4如何設置看門狗超時
例子:APB1的頻率是24MHZ,WDGTB[1:0]設置3,T[5:0]設置成63
t = 1/24000*4096*2*2*2*(63+1)=24.85ms。
有關TWWDG的最小值和最大值。
2.5調(diào)試模式
當微控制器進入調(diào)試模式時(Cortex?-M3內(nèi)核停止),WWDG計數(shù)器會根據(jù)DBG模塊中的DBG_WWDG_STOP配置位選擇繼續(xù)正常工作或者停止工作。
03區(qū)別
應用場景不同
IWDG 最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。
WWDG 最適合那些要求看門狗在精確計時窗口起作用的應用程序。
為什么要窗口看門狗?
對于一般的看門狗,程序可以在它產(chǎn)生復位前的任意時刻刷新看門狗,但這有一個隱患,有可能程序跑亂了又跑回到正常的地方,或跑亂的程序正好執(zhí)行了刷新看門狗操作,這樣的情況下一般的看門狗就檢測不出來了。
如果使用窗口看門狗,程序員可以根據(jù)程序正常執(zhí)行的時間設置刷新看門狗的一個時間窗口,保證不會提前刷新看門狗也不會滯后刷新看門狗,這樣可以檢測出程序沒有按照正常的路徑運行非正常地跳過了某些程序段的情況。
責任編輯:彭菁
-
看門狗
+關注
關注
10文章
566瀏覽量
70956 -
計數(shù)器
+關注
關注
32文章
2274瀏覽量
95032 -
程序
+關注
關注
117文章
3797瀏覽量
81450
發(fā)布評論請先 登錄
相關推薦
獨立看門狗(IWDG)的基礎知識
![<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>(IWDG)的基礎知識](https://file.elecfans.com/web2/M00/71/DF/pYYBAGNPvWOAcWdNAAEJcO3mNEI108.png)
STM32中的獨立看門狗和窗口看門狗是什么
![STM32中的<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>是什么](https://file.elecfans.com/web2/M00/8B/8B/poYBAGPXZXSAK_HNAADYSGGyteo518.jpg)
看門狗實驗概述
stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)
![STM32<b class='flag-5'>看門狗</b>配置(<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)](https://file1.elecfans.com//web2/M00/A6/E1/wKgZomUMQQeANJA7AAAvqvkO9zw240.png)
MCU獨立看門狗與窗口看門狗的區(qū)別
![MCU<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>與窗口<b class='flag-5'>看門狗</b>的區(qū)別](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32中的獨立看門狗和窗口看門狗
詳解獨立看門狗的實現(xiàn)原理
STM32中的獨立看門狗和窗口看門狗
![STM32中的<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>](https://file.elecfans.com/web2/M00/8B/8B/poYBAGPXZXSAK_HNAADYSGGyteo518.jpg)
MCU如何集成看門狗的功能
![MCU如何集成<b class='flag-5'>看門狗</b>的<b class='flag-5'>功能</b>](https://file.elecfans.com/web2/M00/8B/8B/poYBAGPXZXSAK_HNAADYSGGyteo518.jpg)
評論