前言
今天總結(jié)“STM32F103 WDG看門狗”,STM32F1有兩個看門狗,IWDG獨立看門狗和WWDG窗口看門狗,今天將兩個看門狗一并總結(jié)了。
總結(jié)一下二者的區(qū)別:
1)、IWDG使用內(nèi)部低速時鐘LSI,WWDG使用系統(tǒng)時鐘APB1ENR
2)、IWDG沒有中斷,WWDG有中斷
3)、IWDG是12位遞減的。WWDG是7位遞減的
4)、IWDG只有下限,WWDG有下限和上限
5)、IWDG最適合應(yīng)用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。 WWDG最適合那些要求看門狗在精確計時窗口起作用的應(yīng)用程序。
看門狗在長期工作的產(chǎn)品中用到比較多,作用很簡單,防止死機(jī)。看門狗的功能也可用于定時計數(shù)等。
本著免費分享的原則,將總結(jié)的工程源代碼分享給大家,還望看到的朋友關(guān)注一下微信公眾號,并將文章分享給你的朋友。
下載
提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測試、并保證沒問題才上傳至360云盤。
今天的軟件工程下載地址(360云盤):
IWDG:https://yunpan.cn/cSQd68LfbPkIH訪問密碼 d751
WWDG:https://yunpan.cn/cSQdk5CLVWVwW訪問密碼 fe96
STM32F10x的資料可以在我360云盤下載:
https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90
內(nèi)容講解
工程概要說明: IWDG工程基于“EXIT中斷”工程修改而來,因為使用到按鍵來喂狗。系統(tǒng)復(fù)位,快速閃爍兩次LED,接下來間隔1秒串口打印一個計數(shù)值(從0 - 8),在8秒的時間內(nèi)按鍵喂狗,計數(shù)值會歸零;如果不喂狗則會復(fù)位。
WWDG工程基于“TIM定時”而來,因為使用了定時的功能。我提供的工程喂狗的時間是57ms(剛好最大值),間隔57ms喂狗一次,不會復(fù)位(LED快速變化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗則會復(fù)位(LED慢速變化, 不斷打印Reset...)。
提供的工程簡單明了,詳細(xì)中文注釋,方便自己方便大家。
關(guān)于“STM32F103 WDG看門狗”我把重要的幾點在下面分別講述:
一、IWDG的配置
該函數(shù)位于IWDG工程的main.c文件下面;
提供的框圖為見資料。
我想大部分關(guān)心的是這個8秒的喂狗時間是怎樣計算出來的,其實,看了程序的注釋和框圖大概就應(yīng)該能明白了。40K分頻256之后就只能在1秒計數(shù)156次,
而要計滿1250(40000/32)就需要8秒。不明白的朋友請自己分析一下哦。
二、WWDG的配置
該函數(shù)位于WWDG工程的main.c文件下面;
提供的框圖為見資料。
這里也主要講一下最大喂狗時間57ms.分頻之后只能在1秒計數(shù)1099次,要計滿63個大概就需要57ms,這個值就是最大值。
這個工程需要自己修改這個時間來測試,建議都自己親手修改代碼測試一下。
三、WWDG主函數(shù)
該函數(shù)位于WWDG工程的main.c文件下面;
通過串口打印的信息就可以清楚的知道系統(tǒng)復(fù)位了沒有。
親手修改來大于57ms的時間試試就知道。
四、今天的重點
A.WWDG計數(shù)器的范圍為:0x40 --- 0x7F
B.當(dāng)微控制器進(jìn)入調(diào)試模式時(Cortex-M3核心停止),根據(jù)調(diào)試模塊中的DBG_WWDG_STOP配置位的狀態(tài),WWDG的計數(shù)器能夠繼續(xù)工作或停止。
C.沒有兩個寄存器,編程時請細(xì)看寄存器
說明
今天提供的軟件工程基于STM32F103大容量芯片,其實只要適當(dāng)修改工程的部分配置,STM32F1的芯片都適用。