STM32学习-IWDG
一、IWDG 简介IWDG 的全称是Independent Watchdog即独立看门狗。从本质上看IWDG 是一个能够产生系统复位信号的递减计数器。当 IWDG 被启动后计数器会不断向下计数如果计数到0x000还没有被刷新系统就会产生复位。1. IWDG 的核心特性IWDG 具有以下特点特性说明独立时钟时钟由独立 RC 振荡器提供可在低功耗模式运行可在待机模式、停止模式下继续工作递减计数计数器从重装载值向下计数溢出复位计数到0x000时产生系统复位启动后持续工作一旦启用通常不能随意关闭因为 IWDG 使用独立的 RC 时钟所以即使主系统时钟异常它仍然有机会继续运行并在程序异常时复位系统。2. 什么是“喂狗”“喂狗”就是在 IWDG 计数器计数到 0 之前重新装载计数器的值防止系统复位。可以这样理解程序正常运行 - 周期性喂狗 - IWDG 不复位系统 程序跑飞或卡死 - 无法及时喂狗 - IWDG 计数到 0 - 系统复位因此喂狗操作必须放在程序确认“系统仍然正常运行”的位置而不是随意放在定时器中断里无条件执行。3. IWDG 的作用IWDG 主要用于处理程序异常运行问题例如外界电磁干扰导致程序跑飞硬件异常导致系统状态错误软件异常导致程序陷入死循环主循环或关键任务长时间无法正常执行IWDG 的应用场景通常是对稳定性要求较高、但对超时时间精度要求不高的产品。需要注意独立看门狗是异常处理的最后手段不能依赖它来掩盖程序设计问题。真正可靠的系统应该尽量在硬件设计、软件结构、异常处理和任务调度上避免异常发生。二、IWDG 工作原理IWDG 的工作过程可以概括为启动 IWDG。配置预分频系数和重装载值。IWDG 使用 LSI 时钟驱动递减计数器。程序在超时时间内周期性刷新计数器。如果没有及时刷新计数器递减到0x000系统复位。IWDG 的关键点在于“超时时间”。如果超时时间设置太短正常程序可能还没来得及喂狗就复位如果设置太长程序异常后系统恢复速度会变慢。三、IWDG 框图理解启用 IWDG 后LSI 时钟会自动开启。IWDG 的基本结构可以理解为LSI 时钟 - 预分频器 - 递减计数器 - 计数到 0 - 系统复位 ^ | 重装载寄存器其中LSI 为低速内部 RC 时钟。预分频器用于降低 IWDG 计数频率。重装载寄存器保存计数器重新加载的值。喂狗时计数器会重新装载重装载寄存器中的值。LSI 时钟频率并不精确计算时通常按系列估算系列LSI 计算频率STM32F140 kHzSTM32F4/F7/H732 kHz实际项目中如果对看门狗超时时间要求较严格需要结合芯片手册中的 LSI 误差范围进行裕量设计。四、IWDG 寄存器IWDG 常见寄存器包括键寄存器、预分频器寄存器、重装载寄存器和状态寄存器。1. 键寄存器 IWDG_KRIWDG_KR通过写入特定值完成关键控制操作。写入值作用0xAAAA喂狗刷新计数器0x5555解除PR和RLR寄存器写访问保护0xCCCC启动 IWDG 工作这三个值需要重点记住启动0xCCCC解锁0x5555喂狗0xAAAA2. 预分频器寄存器 IWDG_PRIWDG_PR用于设置 IWDG 时钟预分频系数。常见预分频关系如下PR 设置值分频系数0418216332464512862567256预分频系数越大计数器递减越慢IWDG 超时时间越长。3. 重装载寄存器 IWDG_RLRIWDG_RLR用于存放重装载值低 12 位有效。因此重装载值范围通常为0x000 ~ 0xFFF也就是最大值为 4095。如果按可计数数量理解则最多约为 4096 个计数周期。4. 状态寄存器 IWDG_SRIWDG_SR用于判断预分频值和重装载值是否已经更新完成。在寄存器方式配置 IWDG 时修改PR和RLR后需要等待更新完成再刷新计数器。5. 寄存器配置步骤使用寄存器配置 IWDG 的典型步骤如下向IWDG_KR写入0xCCCC使能 IWDG。向IWDG_KR写入0x5555使能寄存器访问。配置IWDG_PR设置预分频器。配置IWDG_RLR设置重装载值。等待寄存器更新完成即IWDG_SR 0x00000000。向IWDG_KR写入0xAAAA刷新计数器。五、IWDG 溢出时间计算IWDG 超时时间由 LSI 时钟、预分频系数和重装载值共同决定。1. 基本计算关系计数器时钟频率IWDG计数频率 LSI频率 / 预分频系数溢出时间IWDG溢出时间 计数次数 / IWDG计数频率结合起来IWDG溢出时间 计数次数 * 预分频系数 / LSI频率在实际计算时计数次数通常按重装载值 1理解Tout (Reload 1) * Prescaler / LSI其中ToutIWDG 溢出时间单位为秒。Reload重装载寄存器值。Prescaler预分频系数。LSIIWDG 使用的低速内部时钟频率。2. HAL 库参数理解使用 HAL 库时常见配置项包括hiwdg.Instance IWDG; hiwdg.Init.Prescaler IWDG_PRESCALER_xxx; hiwdg.Init.Reload reload_value; HAL_IWDG_Init(hiwdg);其中Prescaler对应预分频系数。Reload对应重装载值。HAL_IWDG_Init()会完成 IWDG 初始化并启动。3. 计算示例假设使用 STM32F1按 LSI 40 kHz 计算Prescaler 64 Reload 2499则Tout (2499 1) * 64 / 40000 2500 * 64 / 40000 4 s也就是说如果程序超过约 4 秒没有喂狗IWDG 就会触发系统复位。4. 最短与最长超时时间IWDG 的最短和最长超时时间由 LSI 频率、最小/最大分频系数以及重装载值范围决定。以常见范围估算系列LSI最短时间估算最长时间估算STM32F140 kHz1 * 4 / 40000 0.1 ms4096 * 256 / 40000 ≈ 26.2 sSTM32F4/F7/H732 kHz1 * 4 / 32000 0.125 ms4096 * 256 / 32000 ≈ 32.8 s这些时间是按典型 LSI 频率估算的。由于 LSI 本身不精确实际复位时间会有偏差工程中要留足裕量。六、IWDG 配置步骤使用 HAL 库配置 IWDG 的步骤比直接操作寄存器更简单重点掌握两个函数。1. 初始化并启动 IWDG调用HAL_IWDG_Init();该函数主要完成取消PR/RLR寄存器写保护。设置 IWDG 预分频系数。设置 IWDG 重装载值。启动 IWDG。典型配置结构IWDG_HandleTypeDef hiwdg; ​ hiwdg.Instance IWDG; hiwdg.Init.Prescaler IWDG_PRESCALER_64; hiwdg.Init.Reload 2499; ​ HAL_IWDG_Init(hiwdg);2. 及时喂狗调用HAL_IWDG_Refresh();该函数本质上就是向IWDG_KR写入0xAAAA让计数器重新装载IWDG_RLR中的值。典型用法while (1) { /* 确认关键任务运行正常后再喂狗 */ HAL_IWDG_Refresh(hiwdg); }更推荐的思路是只有当系统关键任务都正常运行后才执行喂狗操作。例如可以设置多个任务运行标志主循环检查所有标志均正常后再统一喂狗。3. HAL 库相关函数函数作用HAL_IWDG_Init()初始化并启动 IWDGHAL_IWDG_Refresh()刷新 IWDG 计数器也就是喂狗附IWDG 使用注意事项1. 不要过度依赖看门狗IWDG 是系统异常后的兜底手段不应该成为软件设计粗糙的理由。程序跑飞、死循环、任务阻塞等问题仍然应该从根因上解决。2. 喂狗位置要合理不建议在固定定时器中断中无条件喂狗。否则即使主循环或关键任务已经异常只要定时器中断还在运行系统仍然会持续喂狗看门狗就失去了意义。更合理的方式是关键任务正常运行 - 设置状态标志 主循环检查所有状态标志 - 全部正常才喂狗3. 超时时间要留裕量IWDG 使用 LSI 时钟而 LSI 精度较低因此计算出的超时时间只是估算值。实际项目中超时时间应大于系统正常最大执行周期并考虑 LSI 误差、任务阻塞、通信等待等情况。4. 启动后调试要谨慎IWDG 启动后如果程序没有及时喂狗调试过程中也可能频繁复位。调试 IWDG 相关代码时应先确认喂狗逻辑和超时时间配置合理。

相关新闻

WPFDevelopers 实战:主题切换、颜色选择与圆形菜单一站式集成

WPFDevelopers 实战:主题切换、颜色选择与圆形菜单一站式集成

目录 一、ColorSwitchBtn —— 主题色切换按钮 1.1 效果 1.2 XAML 结构 1.3 C# 后台代码 1.4 三步接入你自己的项目 二、CircleMenu —— 圆形弹出菜单 2.1 效果 2.2 XAML 结构 2.3 常用依赖属性一览 2.4 路由事件 2.5 后台处理命令示例 2.6 拖动 & 点击判定 …

2026/7/23 12:16:56 阅读更多 →
人教版七年级英语教学资源数字化处理与平台集成技术指南

人教版七年级英语教学资源数字化处理与平台集成技术指南

对于初中英语教学资源的技术性整理和数字化应用,教育工作者和技术支持团队需要一套清晰的方法来管理、验证和优化这些材料。虽然输入材料主要围绕人教版七年级英语上册的视频和PDF资源,但实际项目中更关键的是如何确保这些资源的完整性、可访问性以及在教…

2026/7/23 12:15:56 阅读更多 →
上虞实体门店数字化找谁?探访数享智创完整业务

上虞实体门店数字化找谁?探访数享智创完整业务

当下上虞各大商圈、乡镇实体门店普遍遭遇数字化经营难题:多平台门店信息杂乱,AI 检索难以抓取品牌信息;短视频、直播、宣传物料制作消耗大量人力;线上多渠道流量割裂,缺少稳定私域承接载体。不少本地经营者都在寻找适配…

2026/7/23 12:15:56 阅读更多 →

最新新闻

【企业级对话系统上线倒计时】:多轮提示词设计必须在72小时内完成的3项合规性校验

【企业级对话系统上线倒计时】:多轮提示词设计必须在72小时内完成的3项合规性校验

更多请点击: https://codechina.net 第一章:提示词 提示词(Prompt)是人与大语言模型交互的核心接口,其质量直接决定模型输出的准确性、相关性与可控性。一个精心设计的提示词不仅包含明确的任务指令,还需…

2026/7/24 13:28:40 阅读更多 →
AI Agent在智能运维中的实践与优化

AI Agent在智能运维中的实践与优化

1. 项目概述:当运维遇上AI Agent三年前我接手一个分布式系统的运维任务时,每天要处理上百条告警,经常凌晨三点被电话叫醒处理集群故障。直到我开始尝试将AI技术融入运维流程,才发现原来80%的常规运维工作都可以交给AI Agent自动完…

2026/7/24 13:28:40 阅读更多 →
OpenCV实战:图像拼接、自动判分与目标提取技术解析

OpenCV实战:图像拼接、自动判分与目标提取技术解析

1. 项目概述计算机视觉技术正在深刻改变我们处理图像信息的方式。作为一名长期从事视觉算法开发的工程师,我发现OpenCV这个开源库在解决实际问题时展现出惊人的灵活性。今天我想通过三个典型场景——图像拼接、试卷自动判分和目标提取,带大家深入理解计算…

2026/7/24 13:27:39 阅读更多 →
大模型在输变配电工程评审中的落地实践——金曲AI评审技术方案解析

大模型在输变配电工程评审中的落地实践——金曲AI评审技术方案解析

在输变配电工程建设领域,传统人工评审模式存在流程繁琐、参数核对量大、规则适配性弱、人为误差率高等痛点。随着行业数字化转型推进,依托大语言模型赋能工程评审全流程,成为解决行业评审效率低、专业性参差不齐问题的关键方向。本文基于Deep…

2026/7/24 13:27:39 阅读更多 →
露易丝·海的诗歌18

露易丝·海的诗歌18

我带着爱意看待过去在我所处的无穷无尽的生命中,一切都完美、完整、完全。我们每一个人,包括我自己,都以对我们来说意义非凡的方式体验着生命的富足和充实。现在,我带着爱意看待过去,选择从过去的经历中学习。没有对错…

2026/7/24 13:27:39 阅读更多 →
细粒度动作质量评估:从技术原理到应用实践

细粒度动作质量评估:从技术原理到应用实践

1. 项目概述:重新定义动作评估的维度 "以人为中心的细粒度动作质量评估"这个课题第一次引起我的注意是在三年前的一次康复训练项目中。当时我们团队需要为术后患者设计一套居家康复动作监测系统,但市面上所有动作识别方案都只能判断"是否…

2026/7/24 13:27:39 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻