當程式跑飛後又回到正常地方或者正好執行了重新整理看門狗操作,此情況下一般的看門狗是檢查不出來的
故可以使用視窗看門狗,這樣保證不會提前或者之後重新整理看門狗。可以檢查程式沒有按正常路線執行而跳過的一些程式段。
視窗看門狗:就是在餵狗時間上有乙個上下線。只有在此時間段內才能執行餵狗操作。
上線可以在暫存器中設定;而下線是固定值0x3fh
工作示意圖:
框圖:
產生復位情況:
1、當餵狗的時候如果是計數器的值大於設定值;
2、當計數器的值從0x40減到0x3f時,就是圖中的t6跳變到0時
超時計算:twwdg = (4096 * 2 ^wdgtb * (t[5:0] + 1) / fpclk1)
wwdgtb是wwdg的預分頻係數 fpclk1是 apb1的時鐘分頻(khz) t(5:0)是看門狗計數器低6位
配置過程:
1、使能看門狗時鐘:rcc_apb1periphclockcmd()
2、設定分頻係數:wwdg_setprescaler()
3、設定上視窗值:wwdg_setwindowvalue()
4、開啟提前喚醒中斷並分組: wwdg_enable1t() nvic_init()
5、使能看門狗:wwdg_enable()
6、餵狗:wwdg_setcounter()
7、中斷函式:wwdg_irqhandler()
STM32視窗看門狗
今天剛好遇到使用視窗看門狗的情況,開始設定不是很理解,摸索了幾個小時後終於明白了。記錄下以備不時之需。如上圖,從手冊的截圖,首先找到wwdg的時鐘 就是apb1了。其次我們看到下面wwdg復位條件兩個 如果啟動了看門狗當看門狗計數器 7bit 最大值127 少於0x40 64 時復位,如果啟動了看門...
STM32之視窗看門狗
1 有個7位遞減計數器 wwdg cr 就這個計數器和視窗計數器 wwdg cfr 決定什麼時候餵狗。狗喂早了,復位 早 體現在 計數器值 tr 視窗值 wr 也就是計數器值還沒有減到視窗值以下 2 當 0x40 計數器值 tr 視窗值 wr 時,這時候最適合餵狗了,也只有在這時候餵狗才合適 3 當...
stm32 視窗看門狗學習(二)
視窗看門狗有乙個提前喚醒中斷,如果開啟這個中斷,那麼當計數器的值達到0x40的時候就會產生這個中斷。上次的 加一點就可以做這個實驗了。void wwdg init u8 tr,u8 wr,u32 fprer 最後三行是新加的。void wwdg nvic init void void wwdg ir...