不费话,直接上代码
/*************************************************************
看门狗的喂狗时间(看门狗溢出时间)计算公式:
Tout=((4*2^prer)*rlr)/40
Tout看门狗溢出时间(单位ms),
prer是看门狗时钟预分频值(IWDG_PR值),范围为0~7,
rlr位看门狗重载值(IWDG_RLR)。
比如我们设置PR[2..0]为4, RLR[11..0]的值为625,我们就可以计算得到
Tout=64*625/40=1000ms,这样,看门狗的溢出时间就是1S,
只要在这一秒钟内,有一次吸入0XAAAA到IWDG_KR,就不会导致看门狗复位。
***************************************************************/
void IWDG_Init(u32 prer,u32 rlr)
{
IWDG->KR=0X5555; //解除寄存器保护
IWDG->PR=prer; // 写入初始化分频值
IWDG->RLR=rlr; // 写入自动装载值
IWDG->KR=0XAAAA; //开启寄存器保护
IWDG->KR=0XCCCC; //启动看门狗
}
//喂狗函数
void IWDG_Feed(void)
{
IWDG->KR=0XAAAA;
}
int main(void) //主函数
{
u16 i;
IWDG_Init(4,625); //IWDG时钟=40KHz, PR=4=64分频 时间=1S
while(1)
{
LED1_NOT; //LED指示灯
for(i=60000;i>0;i--);
for(i=60000;i>0;i--);
IWDG_Feed(); //喂狗函数
}
}