項(xiàng)目里面需要加一個(gè)獨(dú)立看門狗,就上網(wǎng)了解了一下,具體原理后期有時(shí)間再分享,今天先簡(jiǎn)單分享一下使用方法。
第一步:CubeMX設(shè)置
第二步:Keil下主循環(huán)中喂狗
說明:在主函數(shù)中調(diào)用此函數(shù),如果主程序正常運(yùn)行,則喂狗函數(shù)會(huì)被循環(huán)執(zhí)行到。如果程序異常跑飛,則喂狗函數(shù)不會(huì)被執(zhí)行到,獨(dú)立看門狗本質(zhì)就是一個(gè)計(jì)時(shí)器(或者計(jì)數(shù)器),計(jì)時(shí)器(或者計(jì)數(shù)器)會(huì)一直加,直到超過我們?cè)O(shè)置的喂狗時(shí)間后復(fù)位單片機(jī)。
第三步:喂狗時(shí)間的計(jì)算
其實(shí)上面的兩步已經(jīng)實(shí)現(xiàn)了獨(dú)立看門狗的功能,下面我們分析一下關(guān)于喂狗時(shí)間的計(jì)算。
上圖是STM32手冊(cè)的一張圖,不同型號(hào)單片機(jī)的獨(dú)立看門狗內(nèi)部時(shí)鐘可能不一樣,有的是32Khz,我用的這款單片機(jī)是40Khz。
預(yù)分頻系數(shù)和CubeMx里的第一項(xiàng)對(duì)應(yīng),時(shí)鐘是40KHz,比如我選的8分頻,就是實(shí)際用的頻率是40/8=5KHz。時(shí)間是頻率的倒數(shù),那么此時(shí)也就是說計(jì)數(shù)器加1或者減1所花費(fèi)的最短時(shí)間是(1/5)=0.2ms(Khz和s單位千分抵消了,所以最后時(shí)間單位是ms),因此如果設(shè)置加載值為2000,則喂狗的最長(zhǎng)時(shí)間應(yīng)該是2000*(1/5)=400ms。
我們和表格對(duì)比一下,8分頻最短時(shí)間是0.2ms(計(jì)數(shù)器加1或者減1所花費(fèi)的最短時(shí)間),我們最后的喂狗時(shí)間400ms也沒有超過最長(zhǎng)時(shí)間819.2ms。因此我們的設(shè)置OK。
具體的喂狗時(shí)間需要結(jié)合主程序代碼運(yùn)行時(shí)間綜合設(shè)定。甚至對(duì)一些特殊時(shí)間段的考慮需要用到窗口看門狗WWDG。
下面我們看一下生成的Keil工程中關(guān)于設(shè)置的位置,如果需要修改時(shí)鐘分頻系數(shù)或者喂狗時(shí)間可以直接在Keil中修改:
網(wǎng)友高見 :
-
STM32
+關(guān)注
關(guān)注
2270文章
10910瀏覽量
356605 -
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
426瀏覽量
32754 -
WWDG
+關(guān)注
關(guān)注
0文章
19瀏覽量
5517 -
獨(dú)立看門狗
+關(guān)注
關(guān)注
0文章
24瀏覽量
3861 -
CubeMx
+關(guān)注
關(guān)注
0文章
31瀏覽量
1351
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論