看门狗简介
看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。因此要不断进行喂狗,防止系统复位。
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_PR和IWDG_RLR寄存器写操作限制
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(pre); //设置IWDG预分频值为pre
IWDG_SetReload(rlr); //设置IWDG重装载值为rlr
IWDG_ReloadCounter(); //将重装载寄存器的值装载进IWDG计数器
IWDG_Enable(); //使能看门狗
喂狗代码
IWDG_ReloadCounter();//定时喂狗就好
看门狗简介
看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。因此要不断进行喂狗,防止系统复位。
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_PR和IWDG_RLR寄存器写操作限制
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(pre); //设置IWDG预分频值为pre
IWDG_SetReload(rlr); //设置IWDG重装载值为rlr
IWDG_ReloadCounter(); //将重装载寄存器的值装载进IWDG计数器
IWDG_Enable(); //使能看门狗
喂狗代码
IWDG_ReloadCounter();//定时喂狗就好
举报