基于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 與闆子接線測試效果良好,獨立看門狗效果良好。