炒冷饭系列-STM32F103之独立看门狗

注意: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();//使能独立看门狗
}

你可能感兴趣的:(嵌入式,stm32)