1、(IWDG独立看门狗)
独立看门狗由内部低速时钟LSI提供计数时钟,8 位分频,12位计数,需要定期喂狗(重载数值 ReloadCounter),如果计数值减为0了,还没有重载数值,则会响应复位事件。
//看门狗的配置为了避免程序跑飞了,计数达到就会强制复位
void IWDG_Config(void)
{ //喂狗时间4S
#ifdef IWDG_OPEN
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //打开独立看门狗的寄存器操作权限
IWDG_SetPrescaler(IWDG_Prescaler_64);//预分频系数40KHz(LSI)/64=625HZ
IWDG_SetReload(2500);//设置重装载值
IWDG_ReloadCounter();//喂狗重新计数T=1/f f=40KHZ/(2500*64)
IWDG_Enable();
#endif
}
2、(WWDG窗口看门狗)
窗口看门狗由APB1(RCC_APB1Periph_WWDG)提供计数时钟,2 位分频,7位计数,需要定期喂狗(更新计数值),如果计数值减为0x40了,还未更新计数值,则会响应复位事件。
当倒计数值要到设置的窗口值,产生窗口看门口中断时,马上喂狗。当倒计数值要到设置的窗口值,产生窗口看门口中断时,没有及时喂狗,将复位重启。
两者的区别:
1、时钟不同,IWDG使用内部低速时钟,WWDG使用系统时钟APB1;
2、IWDG只有下限,WWDG有上下限;
3、IWDG没有中断,WWDG有中断;
4、IWDG有12倒计数器,WWDG只有7位的计数器;