1. 程式人生 > >STM32F1_WDG看門狗(獨立+視窗)

STM32F1_WDG看門狗(獨立+視窗)

前言

今天總結“STM32F103 WDG看門狗”,STM32F1有兩個看門狗,IWDG獨立看門狗和WWDG視窗看門狗,今天將兩個看門狗一併總結了。

總結一下二者的區別:

1)、IWDG使用內部低速時鐘LSI,WWDG使用系統時鐘APB1ENR

2)、IWDG沒有中斷,WWDG有中斷

3)、IWDG是12位遞減的。WWDG是7位遞減的

4)、IWDG只有下限,WWDG有下限和上限

5)、IWDG最適合應用於那些需要看門狗作為一個在主程式之外,能夠完全獨立工作,並且對時間精度要求較低的場合。 WWDG最適合那些要求看門狗在精確計時視窗起作用的應用程式。

看門狗在長期工作的產品中用到比較多,作用很簡單,防止宕機。看門狗的功能也可用於定時計數等。

每天總結的不僅僅是基礎,而是重點,不起眼的重點,容易被人忽視的重點。關注微信公眾號“EmbeddDeveloper”還有更多精彩等著你。

 

本著免費分享的原則,將總結的工程原始碼分享給大家,還望看到的朋友關注一下微信公眾號,並將文章分享給你的朋友。

下載

提供下載的“軟體工程”都是在硬體板子上進行多次測試、並保證沒問題才上傳至360雲盤。

今天的軟體工程下載地址(360雲盤):

STM32F10x的資料可以在我360雲盤下載:

內容講解

工程概要說明: IWDG工程基於“EXIT中斷”工程修改而來,因為使用到按鍵來喂狗。系統復位,快速閃爍兩次LED,接下來間隔1秒串列埠列印一個計數值(從0 - 8),在8秒的時間內按鍵喂狗,計數值會歸零;如果不喂狗則會復位。

WWDG工程基於“TIM定時”而來,因為使用了定時的功能。我提供的工程喂狗的時間是57ms(剛好最大值),間隔57ms喂狗一次,不會復位(LED快速變化, 快速列印WWDG...); 如果大於57ms(自己可以修改一下)未喂狗則會復位(LED慢速變化, 不斷列印Reset...)。

提供的工程簡單明瞭,詳細中文註釋,方便自己方便大家。

關於“STM32F103  WDG看門狗” 我把重要的幾點在下面分別講述:

一、IWDG的配置


該函式位於IWDG工程的main.c檔案下面;

提供的框圖為見資料。

我想大部分關心的是這個8秒的喂狗時間是怎樣計算出來的,其實,看了程式的註釋和框圖大概就應該能明白了。40K分頻256之後就只能在1秒計數156次,

而要計滿1250(40000/32)就需要8秒。不明白的朋友請自己分析一下哦。

二、WWDG的配置


該函式位於WWDG工程的main.c檔案下面;

提供的框圖為見資料。

這裡也主要講一下最大喂狗時間57ms.分頻之後只能在1秒計數1099次,要計滿63個大概就需要57ms,這個值就是最大值。

這個工程需要自己修改這個時間來測試,建議都自己親手修改程式碼測試一下。

三、WWDG主函式


該函式位於WWDG工程的main.c檔案下面;

通過串列埠列印的資訊就可以清楚的知道系統復位了沒有。

親手修改來大於57ms的時間試試就知道。

四、今天的重點

A.WWDG計數器的範圍為:0x40 --- 0x7F

B.當微控制器進入除錯模式時(Cortex-M3核心停止),根據除錯模組中的DBG_WWDG_STOP 配置位的狀態, WWDG的計數器能夠繼續工作或停止。

C.沒有兩個暫存器,程式設計時請細看暫存器

說明

今天提供的軟體工程基於STM32F103大容量晶片,其實只要適當修改工程的部分配置,STM32F1的晶片都適用。

最後

如果覺得內容適合你(如:內容易讀易懂等),你又想了解更多相關內容,請關注公眾號,新內容持續更新中,後期將會有更多優秀內容出現。

贊是一種鼓勵、分享是最好的支援!