看门狗简介
看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。
因此要不断进行喂狗,防止系统复位。
STM32看门狗
STM32的独立看门狗由内部专门的40Khz时钟驱动。但这是一个内部的RC
时钟,所以不是准确的40Khz。但看门狗对时间的要求不是特别精确,所以
可以接受。
溢出时间的计算
看门狗由 IWDG->PR 寄存器设置预分配值, 由IDWG->RLR设置重装载值。
如果设置预分频值为 64 ,
那么时钟有40 000hz / 64 = 625,
代表每秒计数625次,即每毫秒计数0.625次,0.625 / ms
那么记一次数的时间为 1 / 0.625 ms
如果重装载值设置为 1250, 那么溢出时间为 1250 * 1 / 0.625 = 2000ms
意思就是如果超过2000ms不进行喂狗,那么系统就会复位。
但是上面说过内部RC时钟不是准确的40Khz,所以尽快喂狗为好。
看门狗代码实现
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(pre);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
喂狗代码
IWDG_ReloadCounter();