一.看门狗实验概述
看门狗实验解决的问题:
在启动正常运行的时候,系统不能复位;
在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行。
STM32内置两个看门狗,提供了更高的安全信息,时间的精确性和使用的灵活性。
看门狗框图:
二.独立看门狗库函数
三.实验思路
1.取消寄存器写保护:
2.设置独立看门狗的预分频系数,确定时钟:
3.设置看门狗重装载值,确定溢出时间:
4.使能看门狗:
5.应用程序喂狗:
溢出时间计算:
四.代码部分
工程文件:
iwdg.c:
#include "IWDG.H"
void IWDG_Init(u8 prer,u16 rlr) //分频和重装载值
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();//喂狗
IWDG_Enable();
}
main.c:
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "LED.H"
#include "iwdg.h"
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化与按键连接的硬件接口
delay_ms(200);
LED0=0; //点亮LED
IWDG_Init(4,625);
while(1){
if(KEY_Scan(0)==WKUP_PRES)
{
IWDG_ReloadCounter();
}
}
}
无错误,无警告