0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

中科芯CKS32F107XX系列MCU的独立看门狗介绍

中科芯MCU 来源:中科芯MCU 2025-11-28 14:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MCU微课堂

CKS32F107XX系列独立看门狗介绍

第六十七期 2025.11.24

看门狗简介

中科芯CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),它们在安全性、时间精确性和使用灵活性方面变现得非常优秀。两个看门狗定时器单元都可用来检测由软件错误引起的故障,具体表现为当计数器达到给定的超时值或未能在指定时间窗口内刷新计数器的值,会触发系统复位。

IWDG由MCU内部独立RC振荡器产生的低速时钟LSI(Low-speed Internal)驱动,因此即使主时钟发生故障它也仍然有效。而WWDG是由从APB1分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合,比如检测由程序跑飞或死机引起的故障。WWDG最适合那些需要看门狗在精确计时窗口时间内起作用的应用程序,比如检测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常运行序列而产生的软件故障。

IWDG详细介绍

IWDG通俗的解释它是一个12位的递减计数器,当计数器的值从某个值一直减到0的时候,就会产生一个系统复位信号,即IWDG_RESET。如果在计数器没减到0之前,“刷新”计数器的值,就不会产生复位信号,“刷新”这个动作就是我们经常说的喂狗。IWDG直接由VDD电压域供电,即使在MCU停止模式和待机模式下仍然能照常工作。

1、IWDG功能框图解析

下图是独立看门狗的功能框图,分6个部分进行说明。

aadc731e-c8d1-11f0-8c8f-92fbcf53809c.png

① LSI时钟:IWDG的时钟由低速时钟LSI驱动,即使主时钟发生故障它也仍然有效,非常独立。这里需要注意的是,由于RC振荡器的原理和特性(根据温度和环境会有一定的漂移),所以IWDG的定时时间并不一定非常精确,只适用于对时间精度要求比较低的场合。

② 计数器时钟和IWDG_PR寄存器:递减计数器的时钟由LSI经过一个8位的预分频器得到,预分频器寄存器IWDG_PR的值决定分频因子,分频因子可以是:4、8、16、32、64、128、256。分频因子(假设为W)和IWDG_PR值的关系是W = 4 * 2^IWDG_PR。

③ 状态寄存器IWDG_SR:顾名思义,IWDG_SR表示独立看门狗模块的当前状态,该寄存器只有位0:PVU(Prescaler Value Update)和位1:RVU(Reload Value Update)有效,且只能读不能写。PVU置1指示预分频值的更新正在进行中,更新完成后由硬件置0。RVU置1表示重装载值的更新正在进行中,更新完毕之后由硬件置0。只有当RVU或PVU等于0的时候才可以进行下一次更新操作。

④ 重载寄存器IWDG_RLR:重载寄存器是一个12位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。溢出时间Tout(s) = (4 * 2^IWDG_PR) / fIWDG * IWDG_RLR。

⑤ 递减计数器:IWDG的递减计数器是一个12位寄存器,设置范围是0~4095,一个计数器时钟计数器就减1,当计数器减到0时,IWDG会产生一个系统复位信号IWDG_RESET,让程序重新启动运行,如果在计数器减到0之前刷新计数器的值(重新写入新值),就不会产生复位信号,重新刷新计数器值的这个动作俗称喂狗。

⑥ 密钥寄存器IWDG_KR:密钥寄存器IWDG_KR是独立看门狗IWDG的一个核心控制寄存器,主要有三种寄存器值对应三种控制效果。

ab42ac1a-c8d1-11f0-8c8f-92fbcf53809c.png

2、IWDG库函数配置步骤

我们接下来介绍如何驱动CKS32F107xx系列产品的IWDG工作。具体配置步骤如下:

(1)解除寄存器写保护(向IWDG_KR写入0x5555)

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能写权限

(2)设置IWDG预分频因子和重装载值

void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置IWDG预分频值

void IWDG_SetReload(uint16_t Reload); //设置IWDG重装载值

此时可以计算出看门狗溢出时间,比如我们最终设定IWDG_PR值为 4,IWDG_RLR值625,那么就可以得到 Tout = (4 * 2^IWDG_PR) / 40KHz * IWDG_RLR = 64 / 40 * 625 = 1s,看门狗的溢出时间是1s,只要在1s之内,写入0xAAAA到IWDG_KR,就不会触发看门狗复位。这里需要提醒大家的是,由于看门狗的时钟不是准确的40KHz,所以喂狗时间应适当提前。

(3)重载计数值喂狗(向IWDG_KR写入0xAAAA)

IWDG_ReloadCounter(); //把重装载寄存器IWDG_RLR的值放到计数器中

(4)开启看门狗(向IWDG_KR写入0xCCCC)

IWDG_Enable(); //使能 IWDG

通过上面4个步骤,就可以启动IWDG独立看门狗了,之后在程序里面就必须周期性的进行喂狗(一般会使用定时器定时的调用IWDG_ReloadCounter函数),否则将导致系统复位。注意IWDG在一旦开启,系统运行时就不能再被关闭,想要关闭,只能重启,并且重启之后要迅速关闭IWDG。

实验例程

为本期微课堂配套了一个例子,整体功能如下:

(1)系统上电后,LED会点亮,进入主程序while循环,不执行任何操作,无法执行喂狗程序,IWDG触发系统复位,可以看到LED在不停的闪烁。

(2)按下USER按键,执行喂狗操作,LED常亮。

ac25dac6-c8d1-11f0-8c8f-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19160

    浏览量

    404819
  • 寄存器
    +关注

    关注

    31

    文章

    5620

    浏览量

    130454
  • 定时器
    +关注

    关注

    23

    文章

    3375

    浏览量

    124656
  • 独立看门狗
    +关注

    关注

    0

    文章

    26

    浏览量

    4538

原文标题:MCU微课堂|CKS32F107XX系列独立看门狗介绍

文章出处:【微信号:中科芯MCU,微信公众号:中科芯MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    中科CKS32F107XX系列MCU的窗口看门狗介绍

    中科CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立
    的头像 发表于 11-28 14:48 4346次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的窗口<b class='flag-5'>看门狗</b><b class='flag-5'>介绍</b>

    中科CKS32F107XX系列MCU的bxCAN介绍

    CKS32F107xx系列产品的bxCAN支持CAN协议2.0A和2.0B标准。 该CAN 控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN报文,支持使用标准ID和扩展ID的报文
    的头像 发表于 01-22 09:06 3976次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的bxCAN<b class='flag-5'>介绍</b>

    独立看门狗(IWDG)的基础知识

      STM32F10xxx系列内置两个看门狗(独立看门狗和窗口看门狗),提供了更高的安全性、时间
    发表于 10-19 17:10 5323次阅读
    <b class='flag-5'>独立</b><b class='flag-5'>看门狗</b>(IWDG)的基础知识

    STM32中的独立看门狗和窗口看门狗是什么

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门
    的头像 发表于 02-20 17:47 4834次阅读
    STM32中的<b class='flag-5'>独立</b><b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>是什么

    MCU独立看门狗和窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。
    发表于 03-03 09:18 1546次阅读

    什么是stm32看门狗独立看门狗和窗口看门狗工作原理解析

    stm32有两个看门狗独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立
    的头像 发表于 11-06 11:48 2.9w次阅读
    什么是stm32<b class='flag-5'>看门狗</b>?<b class='flag-5'>独立</b><b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>工作原理解析

    STM32F0xx_看门狗独立+窗口)配置详细过程

    STM32F0xx_看门狗独立+窗口)配置详细过程
    的头像 发表于 04-07 14:33 4762次阅读
    STM32<b class='flag-5'>F0xx</b>_<b class='flag-5'>看门狗</b> (<b class='flag-5'>独立</b>+窗口)配置详细过程

    MCU独立看门狗与窗口看门狗的区别

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多
    发表于 10-28 20:06 8次下载
    <b class='flag-5'>MCU</b><b class='flag-5'>独立</b><b class='flag-5'>看门狗</b>与窗口<b class='flag-5'>看门狗</b>的区别

    STM32中的独立看门狗和窗口看门狗

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前
    的头像 发表于 12-22 16:58 3391次阅读

    STM32中的独立看门狗和窗口看门狗

    在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门
    的头像 发表于 01-30 14:38 2742次阅读
    STM32中的<b class='flag-5'>独立</b><b class='flag-5'>看门狗</b>和窗口<b class='flag-5'>看门狗</b>

    MCU如何集成看门狗的功能

    一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前
    的头像 发表于 06-22 09:09 3217次阅读
    <b class='flag-5'>MCU</b>如何集成<b class='flag-5'>看门狗</b>的功能

    CKS32F107xx系列时钟系统具体配置方法讲解

    上一章节对CKS32F107xx系列时钟做了整体介绍,本章节以使用HSI内部高速时钟为例对时钟具体配置方法进行讲解。
    的头像 发表于 05-28 10:05 1751次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>时钟系统具体配置方法讲解

    CKS32F107xx系列MCU中ADC介绍

    CKS32F107xx系列产品提供2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
    的头像 发表于 06-22 11:04 2085次阅读

    CKS32F107xx系列USART的LIN模式

    CKS32F107xx系列在支持正常USART功能的同时,亦支持LIN(局域互联网)模式。
    的头像 发表于 02-18 17:18 1399次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>USART的LIN模式

    中科CKS32F107XX系列MCU的电源控制介绍

    CKS32F107xx的工作电压(VDD)为2.0~3.6V,通过内置的电压调节器提供内核所需的1.5V电源,图1为电源系统框架。
    的头像 发表于 03-25 16:34 595次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的电源控制<b class='flag-5'>介绍</b>