STM32 看門狗詳解

一、IWDG

1.1 獨立看門狗簡介

IWDG(Independent watchdog)獨立看門狗,能夠用來檢測並解決因爲軟件錯誤致使的故障,當計數器到達給定的超時值時,會觸發一箇中斷或產生系統復位程序員

獨立看門狗的時鐘是它專用的低速時鐘(LSI),因此它能保持工做及時主時鐘出現問題。窗口看門狗的時鐘是有APB1時鐘分頻獲得獲得,經過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操做。編程

IWDG 最適合應用於那些須要看門狗做爲一個在主程序以外,可以徹底獨立工做,而且對時間精度要求較低的場合。 WWDG 最適合那些要求看門狗在精確計時窗口起做用的應用程序。安全

1.2 獨立看門狗的特色

①自由運行遞減計數器ide

②時鐘來自經過獨立的RC振盪器(能夠工做在待機和中止模式下)調試

③當向下計數器值達到0時,會產生復位(若是看門狗已經激活)blog

1.3 獨立看門狗功能描述

 

上圖紅框顯示,看門狗功能由 VDD 電壓域供電,因此在中止模式和待機模式下仍能工做it

向關鍵字寄存器(IWDG_KR)寫入0XCCCC,獨立看門狗就會啓動,計數器開始降低從復位值0XFFF。當計數器值到達0,會產生一個復位信號(獨立看門狗復位)class

不管什麼時候向關鍵字寄存器寫入0XAAAA,IWDG_RLR的數值會重載進計數器,避免看門狗復位軟件

1.4 硬件看門狗

若是經過器件選項位使能「硬件看門狗」功能,上電時將自動使能看門狗;若是在計數器計數結束前,若軟件沒有向關鍵字寄存器寫入相應的值,則系統會產生復位配置

1.5 寄存器訪問保護

IWDG_PR 和 IWDG_RLR 寄存器具備寫訪問保護。若要修改寄存器,必須首先對 IWDG_KR寄存器寫入代碼 0x5555。而寫入其餘值則會破壞該序列,從而使寄存器訪問保護再次生效。這意味着重裝載操做(即寫入 0xAAAA)也會啓動寫保護功能。

狀態寄存器指示預分頻值和遞減計數器是否正在被更新

1.6 調試模式

當微控制器進入調試模式時( Cortex™-M3 內核中止), IWDG 計數器會根據 DBG 模塊中的 DBG_IWDG_STOP 配置位選擇繼續正常工做或者中止工做

 

下圖是LSI在不一樣分頻狀況下IWDG超時週期的最小值和最大值。

 

二、WWDG

2.1 簡介

窗口看門狗(Window watchdog)一般被用來監測,由外部干擾或不可預見的邏輯條件形成的應用程序背離正常的運行序列而產生的軟件故障。除非遞減計數器的值在 T6 位變成 0 前被刷新,看門狗電路在達到預置的時間週期時,會產生一個 MCU 復位。若是在遞減計數器達到窗口寄存器值以前刷新控制寄存器中的 7 位遞減計數器值,也會產生 MCU 復位。這意味着必須在限定的時間窗口內刷新計數器

2.2 窗口看門狗主要特色

①可編程自由向下計數器

②復位條件,激活看門狗的狀況下,當遞減計數器值小於 0x40 時復位;在窗口以外重載遞減計數器時復位。

③提早喚醒中斷 (EWI):當遞減計數器等於 0x40 時觸發(若是已使能且看門狗已激活)

2.3 窗口看門狗功能說明

若是窗口看門狗啓動(WWDG_CR寄存器的WDGA位置1),7位向下計數器從0X40向0x3F滾動(T6已經清零),會致使一個復位。若是軟件重載計數器,當計數器值大於窗口所存儲的值時,就會產生復位

 

應用程序必須在正常操做期間寫WWDG_CR寄存器去組織MCU復位。這個操做必須發生在計數器值小於窗口寄存器值。窗口寄存器值存儲在WWDG_CR寄存器,必須在0XFF和0XC0之間。

 

使能窗口看門狗

復位以後,窗口寄存器常常是禁止的。經過設置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了經過復位。

 

控制向下計數器

遞減計數器處於自由運行狀態:即便禁止看門狗,遞減計數器仍繼續遞減計數。當使能看門狗時,必須將 T6 位置 1,以防止當即復位

T[5:0] 位包含了看門狗產生復位以前的計時數目;復位前的延時時間在一個最小值和一個最大值之間變化,這是由於寫入 WWDG_CR 寄存器時,預分頻值是未知的。配置寄存器 (WWDG_CFR) 包含窗口的上限:爲防止發生復位,當遞減計數器的值低於窗口寄存器值且大於 0x3F 時必須重載

注意:可以使用 T6 位產生軟件復位(將 WDGA 位置 1 並將 T6 位清零)

 

看門狗中斷高級特性

若是在產生實際復位以前必須執行特定的安全操做或數據記錄,則可以使用提早喚醒中斷(EWI)。經過設置 WWDG_CFR 寄存器中的 EWI 位使能 EWI 中斷。當遞減計數器的值爲0x40 時,將生成 EWI 中斷。在復位器件以前,可使用相應的中斷服務程序 (ISR) 來觸發特定操做(例如通訊或數據記錄)。

在某些應用中,可使用 EWI 中斷來管理軟件系統檢查和/或系統恢復/功能退化,而不會生成 WWDG 復位。在這種狀況下,相應的中斷服務程序 (ISR) 可用來重載 WWDG 計數器以免 WWDG 復位,而後再觸發所需操做。

經過將 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 調試模式

微控制器進入調試模式時( Cortex™-M3內核中止),WWDG計數器會根據DBG模塊中的DBG_WWDG_STOP配置位選擇繼續正常工做或者中止工做

 

三、區別

應用場景不一樣

IWDG 最適合應用於那些須要看門狗做爲一個在主程序以外,可以徹底獨立工做,而且對時間精度要求較低的場合。

WWDG 最適合那些要求看門狗在精確計時窗口起做用的應用程序

 

爲何要窗口看門狗?

對於通常的看門狗,程序能夠在它產生復位前的任意時刻刷新看門狗,但這有一個隱患,有可能程序跑亂了又跑回到正常的地方,或跑亂的程序正好執行了刷新看門狗操做,這樣的狀況下通常的看門狗就檢測不出來了;

若是使用窗口看門狗,程序員能夠根據程序正常執行的時間設置刷新看門狗的一個時間窗口,保證不會提早刷新看門狗也不會滯後刷新看門狗,這樣能夠檢測出程序沒有按照正常的路徑運行非正常地跳過了某些程序段的狀況。

相關文章
相關標籤/搜索