下图说明了独立看门狗IWDG 与窗口看门狗WWDG的区别:
从中可以看出:
一 复位
独立看门狗在计数器技术导0时复位,
窗口看门狗在计数器计数到0X40时复位。
二 喂狗
独立看门狗可以在计数器从预装载值降低到0过过程中的任意时间喂狗,
窗口看门狗必须在计数器计数到窗口值WR与0X40之间时喂狗,高于这一值喂狗或者低于这一值都会导致复位。窗口看门狗的这一特性有如下特点/作用:
①如果喂狗方式是通过读看门狗计数器WWDG->CR& 0X7F的方式时,例如
if((WWDG->CR & 0X7F) <=(WWDG->CFR & 0X7F))
// if((WWDG->CR & 0X7F) ==(WWDG->CFR & 0X7F)) (如果设置成==,那么监控程序运行时间最好远小于窗口看门狗计数器自减一次的时间,否则容易错过复位时机)
{
HAL_WWDG_Refresh(&WWDG_Handle);
}
这个情况下相比独立看门狗,既能监控程序超时运行,又能够减少喂狗次数
②如果不是通过读看门狗计数器的方式而是直接喂狗
HAL_WWDG_Refresh(&WWDG_Handle);
那么如果监控程序运行时间过长或者过短都会复位,可以监控程序的运行时间。
