【STM32】stm32独立看门狗(IWDG)
生活随笔
收集整理的這篇文章主要介紹了
【STM32】stm32独立看门狗(IWDG)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
stm32獨立看門狗(IWDG)
- 0x01 IWDG簡介
- 0x02 IWDG主要性能
- 0x03 IWDG寄存器配置
0x01 IWDG簡介
STM32F10xxx內置兩個看門狗,(獨立看門狗和窗口看門狗)可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定的超時值時,觸發一個中斷(僅適用于窗口型看門狗)或產生系統復位。
獨立看門狗(IWDG)由專用的低速時鐘(LSI)驅動,即使主時鐘發生故障它也仍然有效。IWDG最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。
0x02 IWDG主要性能
● 自由運行的遞減計數器
● 時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作)
● 看門狗被激活后,則在計數器計數至0x000時產生復位
0x03 IWDG寄存器配置
1. 鍵寄存器(IWDG_KR)
| 位15:0 w | 軟件必須以一定的間隔寫入0xAAAA(喂狗),否則,當計數器為0時,看門狗會產生復位。 |
| 位15:0 w | 寫入0x5555表示允許訪問IWDG_PR和IWDG_RLR寄存器。 |
| 位15:0 w | 寫入0xCCCC,啟動看門狗工作。 |
2. 預分頻寄存器(IWDG_PR)
| 位2:0 rw | 000: 預分頻因子=4 100: 預分頻因子=64 |
| 位2:0 rw | 001: 預分頻因子=8 101: 預分頻因子=128 |
| 位2:0 rw | 010: 預分頻因子=16 110: 預分頻因子=256 |
| 位2:0 rw | 011: 預分頻因子=32 111: 預分頻因子=256 |
3. 重裝載寄存器(IWDG_RLR)
| 位11:0 rw | 看門狗計數器重裝載值(625) |
IWDG配置分析
獨立看門狗工作頻率:40khz / 64分頻 = 625hz
遞減計數器減1的周期:1 / 625hz
獨立看門狗的復位時間:625 * (1 / 625hz) = 1s
IWDG配置參考代碼
#include "bsp_iwdg.h"//使能IWDG,在40KHz LSI下,約等于每隔1s產生IWDG復位 void IWDG_Configuration(void) {IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能或者失能對寄存器 IWDG_PR 和 IWDG_RLR 的寫操作IWDG_SetPrescaler(IWDG_Prescaler_64); //設置 IWDG 預分頻值IWDG_SetReload(625); //設置 IWDG 重裝載值IWDG_ReloadCounter(); //按照 IWDG 重裝載寄存器的值重裝載 IWDG 計數器,喂狗IWDG_Enable(); //使能 IWDG }//喂狗,防止CPU復位 void IWDG_FeedDog(void) {IWDG_ReloadCounter(); }總結
以上是生活随笔為你收集整理的【STM32】stm32独立看门狗(IWDG)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 构成三角形
- 下一篇: 【Linux】生产者消费者模型