ARM開發(7)基於STM32的獨立看門狗
阿新 • • 發佈:2019-01-02
基於STM32的獨立看門狗
一 獨立看門狗原理:
1.1 本實驗實現STM32的獨立看門狗
1.2 實驗思路:理解STM32獨立看門狗原理,根據其原理寫驅動。
1.3 開發環境 : MDK5 庫函式版本開發 JLINK模擬
二 實驗步驟:
2.1 wdg.h程式碼:
#ifndef __WDG_H
#define __WDG_H
#include "sys.h"
void IWDG_Init(u8 prer,u16 rlr); //獨立看門狗初始化
void IWDG_Feed(void); //喂狗
#endif
2.2 wdg.c程式碼(獨立看門狗初始化與喂狗):
#include "wdg.h" /*初始化獨立看門狗 prer:分頻數:0~7(只有低3位有效!) 分頻因子=4*2^prer.但最大值只能是256! rlr:重灌載暫存器值:低11位有效. 時間計算(大概):Tout=((4*2^prer)*rlr)/40 (ms). */ void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能對暫存器IWDG_PR和IWDG_RLR的寫操作 IWDG_SetPrescaler(prer); //設定IWDG預分頻值; IWDG_SetReload(rlr); //設定IWDG重灌載值 IWDG_ReloadCounter(); //按照IWDG重灌載暫存器的值重灌載IWDG計數器 IWDG_Enable(); //使能IWDG } //喂獨立看門狗 void IWDG_Feed(void) { IWDG_ReloadCounter();//reload }
2.2 main.c程式碼(實現獨立看門狗,蜂鳴器檢測效果):
#include "beep.h" #include "delay.h" #include "key.h" #include "sys.h" #include "usart.h" #include "wdg.h" int main(void) { delay_init(); // 延時 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設定NVIC中斷分組2 BEEP_Init();//蜂鳴器初始化 KEY_Init(); //按鍵初始化 delay_ms(500); //延時 IWDG_Init(4,625); // 讀立看門狗設定 BEEP =1; //蜂鳴器響 while(1) { if(KEY_Scan()==8) { IWDG_Feed();//當矩陣鍵盤按鍵8時,不會產生復位 } delay_ms(10); }; }
三 接線測試:
3.1 與板子接線測試效果良好,獨立看門狗效果良好。