單片機系統在外界的干擾下會出現程序跑飛的現象導致出現死循環,看門狗電路就是為了避免這種情況的發生,在一定的時間內(通過計數器)沒有喂狗信號輸入給看門狗則表示MCU出現問題,自動會給處理器發送復位信號,是MCU重新啟動,是系統正常運轉。
STM32的獨立看門狗有內部的專門40KHz低速時鐘驅動,即使主時鐘發生故障,它仍然有效。看門狗時鐘十一個內部RC時鐘,并不是準確的40KHz,而是在30~60KHz之間的變化時鐘,估算時間的時候以40KHz來計算。
第一步,首先取消寄存器寫保護,我們利用庫函數的IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);來實現,
第二部,設置獨立看門狗的預分頻系數和重載裝值,我們同樣用庫函數實現,


第三步,重載計數器值喂狗,我們用IWDG_ReloadCounter();來實現
第四步,啟動看門狗,用IWDG_Enable();來實現
下面來看下程序,實現以下功能,如果不喂狗,則led燈會亮了然后系統復位,自動會滅,然后運行程序又會亮,這樣亮滅亮滅,如果我們連續按下按鍵,則系統不會復位,即led會一直亮著
看下iwdg.c

看下主函數:

這個還是比較簡單的
關鍵字:STM32 獨立看門狗 程序跑飛
引用地址:
STM32之六獨立看門狗
推薦閱讀最新更新時間:2025-03-27 23:25
單片機程序跑飛的原因
1.意外中斷。 是否打開了某個中斷,但是沒有響應和清除中端標志,導致程序一直進入中斷,造成死機假象。 2. 中斷變量處理不妥。 若定義某些會在中斷中修改的全局變量,這時要注意兩個問題:首先為了防止編譯器優化中斷變量,要在這些變量定義時前加 volatile,其次在主循環中讀取中斷變量前應該首先關閉全局中斷,防止讀到一半被中斷給修改了,讀完之后再打開全局中斷;否則出現造成數據亂套。 3. 地址溢出,常見錯誤為指針操作錯誤。 我要著重說的是數組下標使用循環函數中循環變量,如果循環變量沒控制好則會出現數組下標越界,意外修改系統的寄存器造成死機,這種情況下如果死機說明運氣好,否則后面不知道發生什么頭疼的事。 4. 無條件的死循環。
[單片機]
stm32固件庫之讀取按鍵
//按鍵接下拉4.7k 上升沿中斷.按鍵上并聯104電容抗抖動 //引腳定義 /*******************************************************/ define KEY1_PIN GPIO_Pin_0 define KEY1_GPIO_PORT GPIOA define KEY1_GPIO_CLK RCC_AHB1Periph_GPIOA define KEY2_PIN GPIO_Pin_13 define KEY2_GPIO_PORT GPIOC define KEY2_GPIO_CLK RCC_AHB1Pe
[單片機]
基于stm32的多功能時鐘5——LCD12864庫函數的建立
在上一章中,小編實現了多功能時鐘的測距功能。在這一章中,小編本來打算介紹人機交互界面的設計。但是,后來還是想了一下,先將LCD庫函數建立起來,因為真正的技術重點在這里。至于UI的設計,咱們將在下一章介紹。但至于UI設計的美觀程度,我只能盡力而為,畢竟咱們的LCD12864液晶分別率只有128*64,而且是單色的,先天不足。 1.模塊介紹 LCD12864液晶顯示屏 液晶顯示器種類很多,本人目前用過LCD1602、LCD12864、Nokia5110等,還有些比如TFT彩屏,OLED都沒有用過。而此塊LCD12864是一款基于ST7567的128*64的1.7英寸的圖形點陣式液晶。而LCD12864液晶有的可以
[單片機]
基于stm32的多功能時鐘2——DHT11測量溫濕度
1.模塊介紹 DHT11溫濕度傳感器 DHT11溫濕度傳感器是數字式的,包括1個電阻式感濕元件和1個NTC測溫元件,內部自帶AD轉換功能,采用單總線,具有響應快、抗干擾能力強、性價比高等特點。該模塊總共4個引腳,其中兩個是電源引腳VCC和GND,一個是數據引腳,還有一個為空引腳。 DHT11外部引腳 目前流行的數據傳輸總線有II2C總線,SPI總線,單總線等,而DHT11則采用單總線傳輸數據。單總線,顧名思義,就是采用單根信號線,即可傳輸時鐘,又能傳輸數據,而且數據傳輸是雙向的,從而有主機和從機之別。在這里,stm32作為核心控制器,所以是主機,而DHT11為從機。 采用單總線進行數據傳輸,我們需
[單片機]
STM32 USB轉串口驅動安裝不成功出現黃色感嘆號解決方法!
相信很多人在做USB轉串口時出現過串口驅動安裝不成功,出現黃色感嘆號問題, 出現這種問題一般是驅動安裝不成功造成的。 這里我就這個問題總結幾個簡單的方法。 方法1: 插上USB,利用驅動人生安裝驅動。 方法2: 先插上USB,去到設備管理器,把驅動卸載, 然后再把USB拔掉,再插上,讓電腦自動重新安裝驅動,反復幾次就可以了。 方法3: 有一種可能是STM32CubeMX分配的堆空間太小造成的,這里改變其大小即可,如下: 方法4: 還有一種原因是STM32F407的VBUS檢測功能默認是開啟,把該功能關閉即可。 以上就是我遇到過幾種USB轉串口驅動安裝不成功的原因以及解決方
[單片機]
STM32學習筆記(二)STM32
什么是STM32 ST:意法半導體,SOC(System-On-a-Chip)廠商 M: 微控制器微處理器 32:32bits系統 STM32能做什么 各種常用通信接口: 串口 USART:用于跟串口接口的設備通信:如WIFI、GPS模塊、指紋識別模塊 內部集成電路 I2C (Inter-integrated circuit) 內部集成電路音頻 I2S (Inter-integrated circuit Sound) 串行外設接口 SPI (Serial peripheral interface) 通用功能輸出/輸入口 GPIO (General-Purpose I/Os) SDIO接口 SDIO (Secur
[單片機]
STM32如何使用定時器實現微秒(us)級延時?
在STM32微控制器中,可以使用定時器實現微秒級延時。具體來說,可以使用定時器的計數器和自動重裝載寄存器來生成精確的延時。 以下將詳細介紹如何使用定時器實現微秒級延時的步驟: 步驟 1:配置定時器 首先,需要選擇一個適合的定時器。大多數STM32微控制器都配備了多個定時器,因此,可以根據需求選擇一個可用的定時器。一般來說,TIM2和TIM3定時器是常用的,具備較高的精度和可編程性。 接下來,需要進行定時器的基本配置,包括時鐘源、計數模式、分頻系數等。可以根據具體需求,選擇合適的配置參數。通常情況下,可以選擇內部時鐘源作為定時器的時鐘源,并將分頻系數設置為最小,以獲得最高的精度。 步驟 2:設置計數周期 接下來,需要設置定時器的計數
[單片機]
基于STM32單片機的多功能水杯設計
本設計的硬件構成: STM32F103C8T6單片機最小系統板(包含+3.3V穩壓電路+時鐘晶振電路+復位電路(上電自復位,手動復位)),溫度傳感器、水位傳感器、紅外人體傳感器、紅外反射傳感器、超聲波測距模塊、LCD液晶顯示屏、按鍵、蜂鳴器、LED指示燈、繼電器等電路而成; 功能介紹: 1、溫度傳感器采集水溫,按鍵設置水溫閾值,人體感應檢測人體信號,當發現有人時并且水溫低于閾值時,進行加熱(繼電器A),否則不加熱。 2、接水口為固定區域,紅外傳感器檢測是否有水杯,超聲波傳感器檢測水杯里的水位高度。當有水杯時(檢測到紅外信號),開始加水(繼電器B啟動),當超聲波距離小于預設值(程序中設定),停止加水。 3、水位傳感器檢測飲水機
[單片機]