窗口看门狗通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新,那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。
1.工作原理
如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置“1”),并且当7位(T[6:0])递减计数器从0x40翻转到0x3F(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,将产生一个复位。工作原理框图如图4.33所示。
图4.33 窗口看门狗工作原理框图
应用程序在正常运行过程中必须定期地写入WWDG_CR寄存器,以防止MCU发生复位。只有当计数器值小于窗口寄存器的值时,才能进行写操作。储存在WWD_CR寄存器中的数值必须在0xFF和0xC0之间。
(1)启动看门狗
在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位。
(2)控制递减计数器
递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。
T[5:0]位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR寄存器时,预分频值是未知的。
配置寄存器(WWDG_CFR)中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于0x3F时被重新装载,0描述了窗口寄存器的工作过程。(www.daowen.com)
另一个重装载计数器的方法是利用早期唤醒中断(EWI),设置WWDG_CFR寄存器中的WEI位开启该中断。当递减计数器到达窗口寄存器的值时,则产生此中断,相应的中断服务程序(ISR)可以用来加载计数器以防止WWDG复位。在WWDG_SR寄存器中写“0”可以清除该中断。
2.窗口看门狗时序图及超时时间的计算
窗口看门狗编程时可以按如图4.34所示的时序来实现。
图4.34 窗口看门狗工作时序图
计算超时的公式为
式中,TWWDG为WWDG超时时间;TPCLK1为APB1以微米为单位的时钟间隔(周期);在PCLK1=36MHz时的最小-最大超时值。
窗口看门狗超时时间范围如表4.16所示。
表4.16 窗口看门狗超时时间范围表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。