STM32 看门狗详解

一、IWDG

1.1 独立看门狗简介

IWDG(Independent watchdog)独立看门狗,能够用来检测并解决因为软件错误致使的故障,当计数器到达给定的超时值时,会触发一个中断或产生系统复位程序员

独立看门狗的时钟是它专用的低速时钟(LSI),因此它能保持工做及时主时钟出现问题。窗口看门狗的时钟是有APB1时钟分频获得获得,经过可配置的时间窗口来检测应用程序非正常的过迟或过早的操做。编程

IWDG 最适合应用于那些须要看门狗做为一个在主程序以外,可以彻底独立工做,而且对时间精度要求较低的场合。 WWDG 最适合那些要求看门狗在精确计时窗口起做用的应用程序。安全

1.2 独立看门狗的特色

①自由运行递减计数器ide

②时钟来自经过独立的RC振荡器(能够工做在待机和中止模式下)调试

③当向下计数器值达到0时,会产生复位(若是看门狗已经激活)blog

1.3 独立看门狗功能描述

 

上图红框显示,看门狗功能由 VDD 电压域供电,因此在中止模式和待机模式下仍能工做it

向关键字寄存器(IWDG_KR)写入0XCCCC,独立看门狗就会启动,计数器开始降低从复位值0XFFF。当计数器值到达0,会产生一个复位信号(独立看门狗复位)class

不管什么时候向关键字寄存器写入0XAAAA,IWDG_RLR的数值会重载进计数器,避免看门狗复位软件

1.4 硬件看门狗

若是经过器件选项位使能“硬件看门狗”功能,上电时将自动使能看门狗;若是在计数器计数结束前,若软件没有向关键字寄存器写入相应的值,则系统会产生复位配置

1.5 寄存器访问保护

IWDG_PR 和 IWDG_RLR 寄存器具备写访问保护。若要修改寄存器,必须首先对 IWDG_KR寄存器写入代码 0x5555。而写入其余值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操做(即写入 0xAAAA)也会启动写保护功能。

状态寄存器指示预分频值和递减计数器是否正在被更新

1.6 调试模式

当微控制器进入调试模式时( Cortex™-M3 内核中止), IWDG 计数器会根据 DBG 模块中的 DBG_IWDG_STOP 配置位选择继续正常工做或者中止工做

 

下图是LSI在不一样分频状况下IWDG超时周期的最小值和最大值。

 

二、WWDG

2.1 简介

窗口看门狗(Window watchdog)一般被用来监测,由外部干扰或不可预见的逻辑条件形成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。若是在递减计数器达到窗口寄存器值以前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。这意味着必须在限定的时间窗口内刷新计数器

2.2 窗口看门狗主要特色

①可编程自由向下计数器

②复位条件,激活看门狗的状况下,当递减计数器值小于 0x40 时复位;在窗口以外重载递减计数器时复位。

③提早唤醒中断 (EWI):当递减计数器等于 0x40 时触发(若是已使能且看门狗已激活)

2.3 窗口看门狗功能说明

若是窗口看门狗启动(WWDG_CR寄存器的WDGA位置1),7位向下计数器从0X40向0x3F滚动(T6已经清零),会致使一个复位。若是软件重载计数器,当计数器值大于窗口所存储的值时,就会产生复位

 

应用程序必须在正常操做期间写WWDG_CR寄存器去组织MCU复位。这个操做必须发生在计数器值小于窗口寄存器值。窗口寄存器值存储在WWDG_CR寄存器,必须在0XFF和0XC0之间。

 

使能窗口看门狗

复位以后,窗口寄存器常常是禁止的。经过设置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了经过复位。

 

控制向下计数器

递减计数器处于自由运行状态:即便禁止看门狗,递减计数器仍继续递减计数。当使能看门狗时,必须将 T6 位置 1,以防止当即复位

T[5:0] 位包含了看门狗产生复位以前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是由于写入 WWDG_CR 寄存器时,预分频值是未知的。配置寄存器 (WWDG_CFR) 包含窗口的上限:为防止发生复位,当递减计数器的值低于窗口寄存器值且大于 0x3F 时必须重载

注意:可以使用 T6 位产生软件复位(将 WDGA 位置 1 并将 T6 位清零)

 

看门狗中断高级特性

若是在产生实际复位以前必须执行特定的安全操做或数据记录,则可以使用提早唤醒中断(EWI)。经过设置 WWDG_CFR 寄存器中的 EWI 位使能 EWI 中断。当递减计数器的值为0x40 时,将生成 EWI 中断。在复位器件以前,可使用相应的中断服务程序 (ISR) 来触发特定操做(例如通讯或数据记录)。

在某些应用中,可使用 EWI 中断来管理软件系统检查和/或系统恢复/功能退化,而不会生成 WWDG 复位。在这种状况下,相应的中断服务程序 (ISR) 可用来重载 WWDG 计数器以免 WWDG 复位,而后再触发所需操做。

经过将 0 写入 WWDG_SR 寄存器中的 EWIF 位来清除 EWI 中断

2.4 如何设置看门狗超时

 

例子:APB1的频率是24MHZ,WDGTB[1:0]设置3,T[5:0]设置成63

t = 1/24000*4096*2*2*2*(63+1)= 24.85ms

有关 TWWDG 的最小值和最大值

 

2.5 调试模式

微控制器进入调试模式时( Cortex™-M3内核中止),WWDG计数器会根据DBG模块中的DBG_WWDG_STOP配置位选择继续正常工做或者中止工做

 

三、区别

应用场景不一样

IWDG 最适合应用于那些须要看门狗做为一个在主程序以外,可以彻底独立工做,而且对时间精度要求较低的场合。

WWDG 最适合那些要求看门狗在精确计时窗口起做用的应用程序

 

为何要窗口看门狗?

对于通常的看门狗,程序能够在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操做,这样的状况下通常的看门狗就检测不出来了;

若是使用窗口看门狗,程序员能够根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提早刷新看门狗也不会滞后刷新看门狗,这样能够检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的状况。

相关文章
相关标签/搜索