打印
[单片机芯片]

CH32L103 IWDG和WWDG应用

[复制链接]
154|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
L-MCU|  楼主 | 2024-6-28 10:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)位[6:0]进行配置,如下图,喂狗操作在计数器值小于窗口值且大于0x3F时进行。在这区间进行喂狗操作,则MCU不会进行复位。
EVT WWDG例程中,配置WWDG计数器值为0x7F,窗口值为0x5F,时钟分频为8分频。
WWDG计数器值主要是对WWDG 控制寄存器(WWDG_CTLR)位[6:0]进行配置,如下图:
WWDG窗口值主要是对WWDG配置寄存器(WWDG_CFGR)位[6:0]进行配置,如下图:
WWDG时钟分频主要是对WWDG配置寄存器(WWDG_CFGR)位[8:7]进行配置,如上图。
程序中,还对提前唤醒中断使能位进行配置,主要是对WWDG配置寄存器(WWDG_CFGR)位1进行置1,如上图。该位置1后,在自减计数器值达到0x40时产生中断。
WWDG例程中,在while循环里将自减计数器的值与窗口值进行比较,当计数器值小于窗口值时,则进行喂狗操作,确保MCU不会复位。喂狗操作主要是对WWDG 控制寄存器(WWDG_CTLR)位[6:0]进行配置,配置值为0x7F。

关于IWDG以及WWDG具体例程,可参考CH32L103 EVT。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

11

帖子

0

粉丝