項目里面需要加一個獨立看門狗,就上網了解了一下,具體原理后期有時間再分享,今天先簡單分享一下使用方法。
第一步:CubeMX設置





第二步:Keil下主循環中喂狗

說明:在主函數中調用此函數,如果主程序正常運行,則喂狗函數會被循環執行到。如果程序異常跑飛,則喂狗函數不會被執行到,獨立看門狗本質就是一個計時器(或者計數器),計時器(或者計數器)會一直加,直到超過我們設置的喂狗時間后復位單片機。
第三步:喂狗時間的計算
其實上面的兩步已經實現了獨立看門狗的功能,下面我們分析一下關于喂狗時間的計算。


上圖是STM32手冊的一張圖,不同型號單片機的獨立看門狗內部時鐘可能不一樣,有的是32Khz,我用的這款單片機是40Khz。

預分頻系數和CubeMx里的第一項對應,時鐘是40KHz,比如我選的8分頻,就是實際用的頻率是40/8=5KHz。時間是頻率的倒數,那么此時也就是說計數器加1或者減1所花費的最短時間是(1/5)=0.2ms(Khz和s單位千分抵消了,所以最后時間單位是ms),因此如果設置加載值為2000,則喂狗的最長時間應該是2000*(1/5)=400ms。
我們和表格對比一下,8分頻最短時間是0.2ms(計數器加1或者減1所花費的最短時間),我們最后的喂狗時間400ms也沒有超過最長時間819.2ms。因此我們的設置OK。
具體的喂狗時間需要結合主程序代碼運行時間綜合設定。甚至對一些特殊時間段的考慮需要用到窗口看門狗WWDG。
下面我們看一下生成的Keil工程中關于設置的位置,如果需要修改時鐘分頻系數或者喂狗時間可以直接在Keil中修改:


網友高見 :


-
STM32
+關注
關注
2309文章
11162瀏覽量
373415 -
計時器
+關注
關注
1文章
434瀏覽量
35192 -
WWDG
+關注
關注
0文章
21瀏覽量
6012 -
獨立看門狗
+關注
關注
0文章
26瀏覽量
4488 -
CubeMx
+關注
關注
0文章
32瀏覽量
2021
發布評論請先 登錄
STM32中的獨立看門狗和窗口看門狗是什么
stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么
STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)
STM32中的獨立看門狗和窗口看門狗
STM32中的獨立看門狗和窗口看門狗
分享一下STM32基于CubeMX獨立看門狗的使用方法
評論