IWDG 獨立看門狗

2022-05-14 12:36:39 字數 2781 閱讀 6011

本章參考資料:《stm32f4xx 中文參考手冊》 iwdg 章節。

學習本章時,配合《stm32f4xx 中文參考手冊》 iwdg 章節一起閱讀,效果會更佳,

特別是涉及到暫存器說明的部分。

iwdg

簡介stm32 有兩個看門狗,乙個是獨立看門狗另外乙個是視窗看門狗, 獨立看門狗號稱寵

物狗,視窗看門狗號稱警犬,本章我們主要分析獨立看門狗的功能框圖和它的應用。獨立

看門狗用通俗一點的話來解釋就是乙個 12 位的遞減計數器,當計數器的值從某個值一直減

到 0 的時候,系統就會產生乙個復位訊號,即 iwdg_reset。如果在計數沒減到 0 之前,

重新整理了計數器的值的話,那麼就不會產生復位訊號,這個動作就是我們經常說的餵狗。 看

門狗功能由 vdd 電壓域供電,在停止模式和待機模式下仍能工作。

①獨立看門狗時鐘

獨立看門狗的時鐘由獨立的

rc 振盪器

lsi

提供, 即使主時鐘發生故障它仍然有效,

非常獨立。

lsi

的頻率一般在

30~60khz

之間,根據溫度和工作場合會有一定的漂移, 我

們一般取

40khz

,所以獨立看門狗的定時時間並不一定非常精確,只適用於對時間精度要求比較低的場合。 

②計數器時鐘

遞減計數器的時鐘由 lsi 經過乙個 8 位的預分頻器得到,我們可以操作預分頻器寄存

器 iwdg_pr 來設定分頻因子,分頻因子可以是: [4,8,16,32,64,128,256],計數器時鐘

ck_cnt= 40/ 4*2^prv,乙個計數器時鐘計數器就減一。

③計數器

獨立看門狗的計數器是乙個 12 位的遞減計數器,最大值為 0xfff,當計數器減到 0 時,

會產生乙個復位訊號:iwdg_reset,讓程式重新啟動執行,如果在計數器減到 0 之前重新整理

了計數器的值的話,就不會產生復位訊號,重新重新整理計數器值的這個動作我們俗稱餵狗。

④重裝載暫存器

重裝載暫存器是乙個 12 位的暫存器,裡面裝著要重新整理到計數器的值,這個值的大小決

定著獨立看門狗的溢位時間。超時時間 tout = (4*2^prv) / 40 * rlv (ms) , prv 是預分頻器寄存

器的值, rlv 是重裝載暫存器的值。

⑤鍵暫存器

鍵暫存器 iwdg_kr 可以說是獨立看門狗的乙個控制暫存器,主要有三種控制方式,

往這個暫存器寫入下面三個不同的值有不同的效果。

⑥狀態暫存器

狀態暫存器

sr 只有位 0:

pvu

和位 1

: rvu

有效,這兩位只能由硬體操作,軟體操

作不了。

rvu:看門狗計數器重裝載值更新,硬體置

1 表示重裝載值的更新正在進行中,

更新完畢之後由硬體清 0。

pvu:

看門狗預分頻值更新,硬體置

』1』指示預分頻值的更新正在

進行中,當更新完成後,由硬體清

0。所以只有當

rvu/pvu

等於 0

的時候才可以更新重灌

載暫存器

/預分頻暫存器。

怎麼用

iwdg

獨立看門狗一般用來檢測和解決由程式引起的故障,比如乙個程式正常執行的時間是

50ms,在執行完這個段程式之後緊接著進行餵狗,我們設定獨立看門狗的定時溢位時間為

60ms,比我們需要監控的程式 50ms 多一點,如果超過 60ms 還沒有餵狗,那就說明我們監

控的程式出故障了,跑飛了,那麼就會產生系統復位,讓程式重新執行。

**操練場:

int main(void)  

else

/*初始化按鍵

*/key_gpio_config();

//iwdg 1s 超時溢位

iwdg_config(iwdg_prescaler_64 ,625

);

//while部分是我們在專案中具體需要寫的**,這部分的程式可以用獨立看門狗來監控

//如果我們知道這部分**的執行時間,比如是50ms,那麼我們可以設定獨立看門狗的

//溢位時間是60ms,比50ms多一點,如果要被監控的程式沒有跑飛正常執行的話,那麼

//執行完畢之後就會執行餵狗的程式,如果程式跑飛了那程式就會超時,到達不了餵狗的

//程式,此時就會產生系統復位。但是也不排除程式跑飛了又跑回來了,剛好餵狗了,

//歪打正著。所以要想更精確的監控程式,可以使用視窗看門狗,視窗看門狗規定必須

//在規定的視窗時間內餵狗。

while(1

) }}

其中需要注意:

這個定時1s左右的時間,

內部rc**頻率是乙個波動的範圍,我們取40khz計算。最後得到計數器時間約等於1s。

STM32獨立看門狗(IWDG)

在微控制器執行的過程中,我們可能會遇到程式陷入死迴圈的情況。很顯然我們需要對這種情況進行提前的預防。看門狗就是用來進行該工作的。看門狗分為獨立看門狗和視窗看門狗,這一節介紹的是獨立看門狗。stm32的獨立看門狗由內部專門的40khz低速時鐘驅動,與系統主時鐘分開工作,也就是說,主時鐘損壞時,看門狗仍...

獨立看門狗

用我自己的話來解釋一下看門狗 看門狗就是一段程式正常執行時,阻止程式復位的 另一方面也就是說,程式非正常執行時,不能執行,程式就會產生復位,從而跳出非正常程式執行狀態。在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被...

獨立看門狗實驗

這個實驗,如果沒有餵狗時,系統就會產生復位,導致系統斷電一下,所有led燈會滅一下 這裡用到了外部中斷 也可以不用 外部中斷可以自己加 include stm32f4xx.h void led init void void key init void void delay void void iwd...