STM32 Watchdog介紹
前言
- IWDG 最適合應用於那些需要看門狗作為一個在主程式之外,能夠完全獨立工作,並且對時間精度要求較低的場合。
- WWDG 最適合那些要求看門狗在精確計時視窗起作用的應用程式。
IWDG(Independent watchdog)獨立看門狗,可以用來檢測並解決由於軟體錯誤導致的故障,當計數器到達給定的超時值時,會觸發一箇中斷或產生系統復位
獨立看門狗的時鐘是它專用的低速時鐘(LSI),所以它能保持工作及時主時鐘出現問題。視窗看門狗的時鐘是有APB1時鐘分頻得到得到,通過可配置的時間視窗來檢測應用程式非正常的過遲或過早的操作。
視窗看門狗(Window watchdog)通常被用來監測,由外部干擾或不可預見的邏輯條件造成的應用程式背離正常的執行序列而產生的軟體故障。除非遞減計數器的值在 T6 位變成 0 前被重新整理,看門狗電路在達到預置的時間週期時,會產生一個 MCU 復位。如果在遞減計數器達到視窗暫存器值之前重新整理控制暫存器中的 7 位遞減計數器值,也會產生 MCU 復位。這意味著必須在限定的時間視窗內重新整理計數器
獨立看門狗功能描述
Note:(IWDG_KR)寫入0XCCCC,獨立看門狗就會啟動,計數器開始下降從復位值0XFFF。
當計數器值到達0,會產生一個復位訊號(獨立看門狗復位)無論何時向關鍵字暫存器寫入0XAAAA,IWDG_RLR的數值會過載進計數器,避免看門狗復位
暫存器訪問保護
IWDG_PR 和 IWDG_RLR 暫存器具有寫訪問保護。若要修改暫存器,必須首先對 IWDG_KR暫存器寫入程式碼 0x5555。而寫入其他值則會破壞該序列,從而使暫存器訪問保護再次生效。這意味著重灌載操作(即寫入 0xAAAA)也會啟動防寫功能。狀態暫存器指示預分頻值和遞減計數器是否正在被更新
除錯模式
當微控制器進入除錯模式時( Cortex™-M3 核心停止), IWDG 計數器會根據 DBG 模組中的 DBG_IWDG_STOP 配置位選擇繼續正常工作或者停止工作。下圖是LSI在不同分頻情況下IWDG超時週期的最小值和最大值。
視窗看門狗功能描述
如果視窗看門狗啟動(WWDG_CR暫存器的WDGA位置1),7位向下計數器從0X40向0x3F滾動(T6已經清零),會導致一個復位。如果軟體過載計數器,當計數器值大於視窗所儲存的值時,就會產生復位
應用程式必須在正常操作期間寫WWDG_CR暫存器去組織MCU復位。這個操作必須發生在計數器值小於視窗暫存器值。視窗暫存器值儲存在WWDG_CR暫存器,必須在0XFF和0XC0之間。
Note:(看門狗中斷高階特性)
如果在產生實際復位之前必須執行特定的安全操作或資料記錄,則可使用提前喚醒中斷(EWI)。通過設定 WWDG_CFR 暫存器中的 EWI 位使能 EWI 中斷。當遞減計數器的值為0x40 時,將生成 EWI 中斷。在復位器件之前,可以使用相應的中斷服務程式 (ISR) 來觸發特定操作(例如通訊或資料記錄)。
在某些應用中,可以使用 EWI 中斷來管理軟體系統檢查和/或系統恢復/功能退化,而不會生成 WWDG 復位。在這種情況下,相應的中斷服務程式 (ISR) 可用來過載 WWDG 計數器以避免 WWDG 復位,然後再觸發所需操作。
通過將 0 寫入 WWDG_SR 暫存器中的 EWIF 位來清除 EWI 中斷
如何設定看門狗超時
除錯模式
微控制器進入除錯模式時( Cortex™-M3核心停止),WWDG計數器會根據DBG模組中的DBG_WWDG_STOP配置位選擇繼續正常工作或者停止工作