CH32L103 IWDG和WWDG应用
本帖最后由 L-MCU 于 2024-6-28 10:37 编辑CH32L103设有独立看门狗(IWDG)和窗口看门狗(WWDG)。关于其具体介绍,可看CH32L103应用手册。
1、独立看门狗(IWDG)独立看门狗是一个12位自减型计数器,时钟源为LSI,当计数器值减到0时MCU会进行复位。独立看门狗可在低功耗模式下运行,可将MCU从待机模式下唤醒,当计数器值减到0时会复位唤醒。CH32L103 EVT提供了独立看门狗例程,例程中配置3.2s复位,即要在3.2s内进行喂狗,若不喂狗则会进行复位。关于3.2s的计算,具体计算步骤如下:(1)根据程序配置,设置看门狗时基为LSI 32分频,重装载值为4000。根据L103数据手册,LSI的大小约为40KHz。程序以及相关参数见下图:(2)LSI的大小为40KHz,32分频,则时基为1/(40KHz/32),即计数一次的时间为0.8ms;(3)重装载值为4000,计数一次时间为0.8ms,则计数器递减到0大约需要3200ms,即3.2s。
2、窗口看门狗(WWDG)窗口看门狗是一个可编程的7位自减型计数器,当计数器值小于 0x40或计数器值在窗口时间外被重装载时将会复位。具有唤醒提前通知功能(EWI),用于及时喂狗动作防止系统复位。CH32L103 EVT提供了窗口看门狗例程。关于窗口看门狗,顾名思义,其有一个上限值和一个下限值。其中,下限值为计数器值小于0x40,即达到0x3F时会进行复位;上限值通过WWDG配置寄存器(WWDG_CFGR)位进行配置,如下图,喂狗操作在计数器值小于窗口值且大于0x3F时进行。在这区间进行喂狗操作,则MCU不会进行复位。 EVT WWDG例程中,配置WWDG计数器值为0x7F,窗口值为0x5F,时钟分频为8分频。WWDG计数器值主要是对WWDG 控制寄存器(WWDG_CTLR)位进行配置,如下图: WWDG窗口值主要是对WWDG配置寄存器(WWDG_CFGR)位进行配置,如下图:WWDG时钟分频主要是对WWDG配置寄存器(WWDG_CFGR)位进行配置,如上图。程序中,还对提前唤醒中断使能位进行配置,主要是对WWDG配置寄存器(WWDG_CFGR)位1进行置1,如上图。该位置1后,在自减计数器值达到0x40时产生中断。WWDG例程中,在while循环里将自减计数器的值与窗口值进行比较,当计数器值小于窗口值时,则进行喂狗操作,确保MCU不会复位。喂狗操作主要是对WWDG 控制寄存器(WWDG_CTLR)位进行配置,配置值为0x7F。
关于IWDG以及WWDG具体例程,可参考CH32L103 EVT。
独立看门狗可以在低功耗模式下运行,同时还具备将MCU从待机模式下唤醒的能力 独立看门狗(IWDG)是一个12位自减型计数器,其时钟源为LSI,当计数器值减到0时,MCU会进行复位
窗口看门狗是一个可编程的7位自减型计数器,当计数器值小于0x40或计数器值在窗口时间外被重装载时将会复位
WWDG适用于那些要求看门狗在精确计时窗口起作用的应用程序
窗口看门狗要用于监视软件错误,确保系统的高稳定性
IWDG适用于对时间精度要求不高的场景,能在待机状态下工作,主要监控硬件故障。而WWDG则适用于需要精确计时的应用场景,能够在计数器即将超时时产生中断,避免系统复位,更多地用于监控软件错误
通过不断更新看门狗计数器,可以避免计数器递减到0,从而避免复位。
页:
[1]