什么是窗口看门狗?
1)独立看门狗
限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。
2)窗口看门狗
之所以称为窗口就是因为其喂狗时间是一个“窗口”,不能过早也不能过晚。
STM32F10x 的窗口看门狗中有一个7位的递减计数器,出现下述2种情况之一时产生看门狗复位:
1)当计数器的数值从0x40减到0x3F时 ,这里的0x3F可以看成是窗口的下限;
2)喂狗的时候,如果计数器的值大于某一设定数值(这个数值是窗口的上限),此数值在WWDG_CFR寄存器中配置。
对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗。但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或者说跑乱的程序正好执行了刷新看门狗操作,这样的情况一般的看门狗不好检测;
如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行的情况。
如果非要说窗口看门狗的具体应用,我一时也说不上来,因为没有用过。但是这不妨碍我们做实验学习窗口看门狗。
先看一幅图,直观地认识窗口看门狗。