注意:1、重装载值前要加延时,让复位(灯灭)后等待一段时间才能看到灯灭
2、按键KEY_UP识别输入电平为高电平
3、重装载值后要把值加载到寄存器中(IWDG_ReloadCounter()
#include "stm32f10x.h"
#include "BEEP.h"
#include "LED.h"
#include "delay.h"
#include "usart.h"
#include "key.h"
#include "exit.h"
void myIwdgHandler(u8 prer,u16 rlr);
int main(void)
{
delay_init(); //延时函数初始化
LED_Init();
keyInit();
delay_ms(500); //让人看得到灭 注意这一步
myIwdgHandler(4,625);
LED0=0;
while(1)
{
if(KEY_UP==1)
{
IWDG_ReloadCounter();//喂狗
}
}
}
//函数功能:可以看到 DS0 不停的闪烁,证明程序在不停的复位,
//否则只会DS0 常亮。
//这时我们试试不停的按 WK_UP 按键,可以看到 DS0 就常亮了,不会再闪烁。
void myIwdgHandler(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//允许被写,取消写保护功能
IWDG_SetPrescaler(prer);//设置预分频值 Tout=((4× 2^prer) × rlr) /40 prer=4, rlr=625,=1000ms
IWDG_SetReload(rlr);//设置重装载值 0 ~ 0x0FFF.
IWDG_ReloadCounter();//把值加到重装载IWDG计数器
IWDG_Enable();//使能独立看门狗
}