原理图:
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "wdg.h"
//STM32开发板实验6
//独立看门狗实验
int main(void)
{
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
// uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //按键初始化
delay_ms(500); //让人看得到灭
IWDG_Init(4,625); //与分频数为64,重载值为625,溢出时间为1s
LED0=1; //点亮LED0
while(1)
{
if(KEY_Scan(0)==KEY_UP)
{
IWDG_Feed();//如果WK_UP按下,则喂狗
}
delay_ms(10);
};
}
重点分析 :IWDG_Init(4,625);
喂狗程序 :IWDG_ReloadCounter();
重点分析 :IWDG_Init(4,625);
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器IWDG_PR和IWDG_RLR的写操作
IWDG_SetPrescaler(prer); //设置IWDG预分频值:设置IWDG预分频值为64
IWDG_SetReload(rlr); //设置IWDG重装载值
IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器
IWDG_Enable(); //使能IWDG
} 喂狗程序 :IWDG_ReloadCounter();