情景如下:led一闪一灭,当我们按下某个按键时,他就保持亮,不按的话就会闪烁,实现一直按一直亮,不按则闪烁。
基本步骤如下:
①:取消寄存器写保护:
IWDG_WriteAccessCmd();
②:设置独立看门狗的预分频系数,确定时钟:
IWDG_SetPrescaler();
③:设置看门狗重装载值,确定溢出时间:
IWDG_SetReload();
④:使能看门狗
IWDG_Enable();
⑤:应用程序喂狗:
IWDG_ReloadCounter();
老规矩:还是先写.h文件
#ifndef __WDG__H
#define __WDG__H
#include "sys.h"
void IWDG_Init(u8 prer,u16 rlr);
#endif
然后.c文件
#include "iwdg.h"
#include "stm32f10x.h"
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
}
最后主函数:
#include "beep.h"
#include "led.h"
#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "exti.h"
#include "iwdg.h"
int main(void)
{
delay_init();
LED_Init();
delay_ms(200);
PBout(5)=0;
IWDG_Init(4,625);
while(1)
{
if(PEin(4)==0)
{
IWDG_ReloadCounter();
}
}
}
|