看门狗就是当程序跑飞不能按时喂狗的时候进行芯片复位,看程序:
/* 独立看门狗初始化,(1000000/40K)*256*800=5.12s*/
BSP_IWDG_Init(IWDG_Prescaler_256, (uint16)800);
void IWDG_ReloadCounter(void)
{
IWDG->KR = KR_KEY_Reload;
}
以上就是初始化和喂狗的程序,下面看详解:
/*
*******************************************************************************
功能:初始化独立看门狗
参数:
u8Prer 分频数:0~7(只有低3位有效!) 分频因子=4*2^prer.但最大值只能是256!
u16Rlr 低11位有效
返回:无
备注:时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms)
u8Prer = IWDG_Prescaler_256, u16Rlr = 312时,
看门狗时钟分频,40K/256=156HZ(6.4ms)
喂狗时间:312*6.4MS = 2s 注意u16Rlr不能大于0xfff
*******************************************************************************
*/
void BSP_IWDG_Init(uint8 u8Prer,uint16 u16Rlr)
{
/* 使能对寄存器IWDG_PR和IWDG_RLR的写操作*/
IWDG_WriteAccessCmd(IWDG_WriteAccess