STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
| 主题 | 内容 | 教学目的/扩展视频 |
|---|---|---|
| 看门狗 | 什么是看门狗,原理分析,启动喂狗方法,读标志位。 | 熟悉在程序里用看门狗。 |
师从洋桃电子,杜洋老师
📑文章目录
- 一、看门狗应用架构分析
- 1.1 系统监控流程图
- 1.2 双看门狗应用场景对比
- 二、独立看门狗实战解析
- 2.1 测试程序核心代码
- 2.2 代码执行流程图
- 2.3 关键参数计算
- 三、窗口看门狗进阶应用
- 3.1 测试程序核心逻辑
- 3.2 程序运行原理图
- 3.3 时间窗口参数解析
- 四、关键代码剖析
- 4.1 独立看门狗初始化
- 4.2 窗口看门狗中断处理
- 五、扩展应用设计
- 5.1 复合监控系统架构
- 5.2 调试技巧
- 六、常见问题解答
- 七、性能优化建议
- 八、相关资源
▲ 回顾上期🔍STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
一、看门狗应用架构分析
1.1 系统监控流程图
1.2 双看门狗应用场景对比
| 特性 | 独立看门狗(IWDG) | 窗口看门狗(WWDG) |
|---|---|---|
| 触发条件 | 任意时间未喂狗 | 窗口期外喂狗/超时未喂狗 |
| 响应速度 | 约1秒(可配置) | 毫秒级响应 |
| 中断支持 | 无 | 提供早期预警中断 |
| 典型应用 | 基础系统监控 | 实时任务时序控制 |
二、独立看门狗实战解析
2.1 测试程序核心代码
// main.c关键逻辑
IWDG_Init(); // 初始化看门狗(预分频64,重载值625)
while(1) {IWDG_Feed(); // 喂狗操作if(按键按下) delay_s(2); // 人为制造喂狗失败
}
2.2 代码执行流程图
2.3 关键参数计算
超时时间 = \frac{预分频值 \times 重载值}{40} \ (ms)
示例配置:
- 预分频值:64(实际分频系数=4×64=256)
- 重载值:625
- 理论超时时间:≈1秒
三、窗口看门狗进阶应用
3.1 测试程序核心逻辑
// main.c关键代码
WWDG_Init(); // 初始化窗口看门狗
while(1) {delay_ms(54); // 精确窗口时间控制WWDG_Feed(); // 窗口期内喂狗
}
3.2 程序运行原理图
3.3 时间窗口参数解析
时间窗口 = \frac{4096 \times 预分频值 \times (CNT-WR)}{PCLK1} \ (μs)
示例配置:
- 计数器初值(CNT):0x7F(127)
- 窗口值(WR):0x50(80)
- 预分频值:8
- PCLK1时钟:36MHz
- 实际窗口时间:48ms~64ms
四、关键代码剖析
4.1 独立看门狗初始化
void IWDG_Init(void) {IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(pre); // 设置预分频IWDG_SetReload(rlr); // 设置重载值IWDG_ReloadCounter(); // 重载计数器IWDG_Enable(); // 启动看门狗
}
4.2 窗口看门狗中断处理
void WWDG_IRQHandler(void) {WWDG_ClearFlag(); // 清除中断标志// 紧急处理代码// 保存系统状态/发送警报WWDG_SetCounter(WWDG_CNT); // 重置计数器
}
五、扩展应用设计
5.1 复合监控系统架构
5.2 调试技巧
- IWDG冻结功能:在调试模式设置DBGMCU_CR寄存器
- WWDG时间测量:使用定时器捕获喂狗脉冲
- 安全喂狗策略:
- 多任务协同喂狗
- 喂狗前进行系统自检
- 状态保存机制:在复位前将关键数据存入备份寄存器
六、常见问题解答
Q1:喂狗操作导致程序卡顿?
- 优化喂狗位置:放在主循环空闲时段
- 使用DMA或硬件自动喂狗
Q2:窗口时间计算不准确?
- 校准主时钟源
- 使用公式:实际时间 = (4096×预分频×(CNT-WR))/PCLK1
Q3:同时使用双看门狗要注意什么?
- 设置不同的超时周期
- IWDG周期 > WWDG周期
- 错开喂狗时间点
七、性能优化建议
| 优化方向 | 实施方法 | 预期效果 |
|---|---|---|
| 时钟精度 | 使用外部晶振 | 提高时间计算精度 |
| 喂狗策略 | 多任务协同喂狗 | 避免单点故障 |
| 异常处理 | 在WWDG中断中保存系统状态 | 提升故障诊断能力 |
| 功耗控制 | 在低功耗模式下调整预分频 | 平衡监控与功耗需求 |
附:看门狗配置速查表
| 寄存器 | IWDG | WWDG |
|---|---|---|
| 控制寄存器 | IWDG_KR | WWDG_CR |
| 预分频寄存器 | IWDG_PR | WWDG_CFR |
| 重载寄存器 | IWDG_RLR | WWDG_CFR |
| 状态寄存器 | - | WWDG_SR |
八、相关资源
[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] 看门狗原理.pptx
[5] 独立看门狗测试程序
[6] 窗口看门狗测试程序
💬 技术讨论(请在评论区留言~)
📌 下期预告:下一期将探讨TIM定时器
重点课程,欢迎持续关注!
点击查阅🔍往期【STM32专栏】文章
版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志:
- v1.0 初始版本(2025-04-07)
相关文章:
STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
主题内容教学目的/扩展视频看门狗什么是看门狗,原理分析,启动喂狗方法,读标志位。熟悉在程序里用看门狗。 师从洋桃电子,杜洋老师 📑文章目录 一、看门狗应用架构分析1.1 系统监控流程图1.2 双看门狗应用场景对比 二、…...
DeepSeek-MLA
MLA 结构 需要缓存 KV 向量共用的压缩隐特征K 向量多头共享的带位置编码的向量 为什么带有位置信息的 Q 向量来自于隐特征向量,而带有位置的 K 向量来自于 H 向量且共享呢? 最好的方法肯定是从H向量直接计算并且不共享,但是会大大增加显存使…...
pyTorch-迁移学习-学习率衰减-四种天气图片多分类问题
目录 1.导包 2.加载数据、拼接训练、测试数据的文件夹路径 3.数据预处理 3.1 transforms.Compose数据转化 3.2分类存储的图片数据创建dataloader torchvision.datasets.ImageFolder torch.utils.data.DataLoader 4.加载预训练好的模型(迁移学习) 4.1固定、修改预训练…...
基于大模型的GCSE预测与治疗优化系统技术方案
目录 技术方案文档:基于大模型的GCSE预测与治疗优化系统1. 数据预处理模块功能:整合多模态数据(EEG、MRI、临床指标等),标准化并生成训练集。伪代码流程图2. 大模型架构(Transformer-GNN混合模型)功能:联合建模时序信号(EEG)与空间结构(脑网络)。伪代码流程图3. 术…...
vscode Colipot 编程助手
1、登录到colipot,以github账号,关联登录 点击【continue】按钮,继续。 点击【打开Visual Studio Code】,回到vscode中。 2、问一下11? 可以看出,很聪明,一下子就算出来了。 3、帮我们写一个文件…...
1、window 下SDL 下载使用, 测试环境搭建
1. SDL3下载 官网: https://www.libsdl.org/ 点击SDL Releases 或者 SDL GItHub 进入github下载: 因为自己在windows下使用的mingw,所以下载mingw版的,也可以 下载源码自己编译。 2. 项目搭建 这里使用的时mingw vsocde cmake, 可以使…...
OpenGL学习笔记(模型材质、光照贴图)
目录 光照与材质光照贴图漫反射贴图采样镜面光贴图 GitHub主页:https://github.com/sdpyy OpenGL学习仓库:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 光照与材质 在现实世界里&…...
【MySQL】常用SQL--持续更新ing
一、配置信息类 1.查看版本 select version; 或 select version(); 2.查看配置 show global variables where variable_name in (basedir,binlog_format,datadir,expire_logs_days,innodb_buffer_pool_size,innodb_log_buffer_size,innodb_log_file_size,innodb_log_files_i…...
视频分析设备平台EasyCVR打造汽车门店经营场景安全:AI智慧安防技术全解析
一、方案背景 某电动车企业不停爆出维权新闻,支持和反对的声音此起彼伏,事情不断发酵、反转,每天都有新消息,令人目不暇接。车展、车店作为维权事件的高发场所,事后复盘和责任认定时,安防监控和视频监控平…...
【AI提示词】因果溯源大师
提示说明 因果遡源大师,能够帮助你找出从起点到终点的因果链。 提示词 ## Role: 因果溯源大师## Profile: - author: xxx - version: 1.0 - language: 中文 - description: 我是因果遡源大师,能够帮助你找出从起点到终点的因果链## Goals: - 帮助用户…...
Hibernate里的对象不同状态和Session的核心方法
临时状态的测试 Student student new Student("张三", "男", 22, new Date()); 以上student就是一个Transient(临时状态),此时student并没有被session进行托管,即在session的缓存中还不存在student这个对象,当执行完save方法后&a…...
模型嵌入式部署
背景 自从深度学习大规模应用以来,其中一个应用方向就是将深度学习视觉算法部署到嵌入式平台上,使用NPU推理。虽然已经做了很久的模型部署,但一直都是在公司默默耕耘,为了发展一下自己“边缘部署专家”这个个人品牌,打…...
Redlinux(2025.3.29)
1、将你的虚拟机的网卡模式设置为nat模式,给虚拟机网卡配置三个主机位分别为100、200、168的ip地址。(以nmtui命令为例) 2、测试你的虚拟机是否能够ping通网关和dns,如果不能请修改网关和dns的地址。 首先打开虚拟网络编辑器查看NAT设置里的网关IP&…...
uni-app项目运行在浏览器、微信开发者工具、mumu模拟器
一、安装HBuilder X 1、下载HBuilder X 官网网址:https://dcloud.io/hbuilderx.html 根据电脑系统下载对应的版本(我的电脑是Windows 10) 2.安装HBuilder X 直接将HBuilderX.4.61.2025040322-alpha.zip解压到自己想要存放的文件夹中 双击…...
2025-04-07 NO.3 Quest3 MR 配置
文章目录 1 MR 介绍1.1 透视1.2 场景理解1.3 空间设置 2 配置 MR 环境2.1 场景配置2.2 MR 配置 3 运行测试 配置环境: Windows 11Unity 6000.0.42f1Meta SDK v74.0.2Quest3 1 MR 介绍 1.1 透视 透视(Passthrough)是将应用的背景从虚拟的…...
抓wifi无线空口包之Macbook Pro抓包(一)
参考: 在MAC OS上进行Wi-Fi抓包和空中包分析_空口抓包和无线网卡抓包的区别-CSDN博客 WireShark中802.11帧的类型、子类型对照表_wireshark 怎么看disassociate帧和deauthenticate-CSDN博客 一、在macbook pro上,点击option 同时点击右上角wifi 功能&a…...
单元测试原则之——不要模拟值对象 (1)
1. 什么是值对象(Value Objects)? 值对象是指那些不可变且仅通过其属性(数据)来定义的对象。它们通常没有复杂的逻辑或行为,主要用于存储和传递数据。例如: ● 字符串(String) ● 数字(Integer, Double) ● 日期(LocalDate, Instant) ● 自定义的简单数据类(如…...
版本控制工具——SVN
目录 【版本控制系统】 【SVN概述】 【SVN基本使用】 【解决SVN拉取文件到本地后不显示绿色图标问题】 【版本控制系统】 版本控制系统(version control system)是一种用于管理文件变更的软件工具,主要用于记录文件的修改历史,…...
2022第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(题解解析)
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、九进制转十进制-(解析)-简单的进制转化问题😄 2、顺子日期-(解析)-考察日期 3…...
Three.js 系列专题 5:加载外部模型
内容概述 Three.js 支持加载多种 3D 文件格式(如 GLTF、OBJ、FBX),这让开发者可以直接使用专业建模软件(如 Blender、Maya)创建的复杂模型。本专题将重点介绍 GLTF 格式的加载,并调整模型的位置和材质。 学习目标 理解常见 3D 文件格式及其特点。掌握使用 GLTFLoader 加…...
【EC200N-CN——Linux驱动移植】问题回顾
【EC200N-CN——Linux驱动移植】问题回顾 1)、开发回顾一、问题回顾与解决过程二、核心原理分析1. **USB设备识别的关键:VID/PID**2. **为什么之前不生成ttyUSB节点?**3. **为什么添加PID后就能生成节点?** 三、日志关键信息解读1…...
linux安装ollama
俩种方式都可 一、linux通过docker安装ollama镜像 1.下载安装ollama镜像 # 安装 Docker sudo yum install docker sudo systemctl start docker#docker查看所有容器 docker ps -a # 查看所有容器# docker查看指定容器 docker ps -a |grep ollama# 创建模型存储目录ÿ…...
构建k8s下Helm私有仓库与自定义Chart开发指南
#作者:程宏斌 文章目录 自定义helm模板1、开发自己的chare包2、调试chart3、安装chart 自定义helm模板 https://hub.helm.sh/ 1、开发自己的chare包 [rootmaster ~]# helm create mychare //创建一个名为mychare的chare包 [rootmaster ~]# tree -C mychare/ //以…...
【7】C#上位机---Modbus RTU 界面设计与封装
C#上位机---Modbus通讯 1 Modbus RTU 通讯1.1 RS485串口与串行通信(Serial Communications)1.2 Modbus RTU协议1.3 Modbus RTU主从模式1.4 Modbus 主从站模拟调试2 Modbus RTU 界面设计与封装2.1 温度控件的类属性2.2 C#封装Modbus实现通讯2.3 C#封装Modbus TRU通用类2.4 上位…...
【JVM】question
问题 JVM线程是用户态还是内核态 java线程在jdk1.2之前,是基于名为“绿色线程”的用户线程实现的,这导致绿色线程只能同主线程共享CPU分片,从而无法利用多核CPU的优势。 由于绿色线程和原生线程比起来在使用时有一些限制, jdk1.2…...
Node.js 中处理 Excel 文件的最佳实践
在现代应用开发中,Excel 文件仍然是数据交换和存储的重要格式之一。在 Node.js 环境中,处理 Excel 文件的需求日益增加。本文将介绍如何在 Node.js 中高效地处理 Excel 文件,涵盖工具选择、基本操作和最佳实践。 1. 选择合适的库 在 Node.js…...
【嵌入式学习6】多任务版TCP服务器
目录 如何实现: 客户端1.0版本: 服务端: 客户端2.0版本: thread.join() 是一个线程同步方法,用于主线程等待子线程完成。当你调用 thread.join() 时,主线程会阻塞,直到调用 join() 的子线程…...
每天认识一个设计模式-外观模式:化繁为简的接口魔法
一、前言 在设计模式中,结构型设计模式处理类或对象组合,可助力构建灵活、可维护软件结构。此前探讨过组合模式(将对象组合成树形结构,统一处理单个与组合对象,如文件系统管理)和装饰器模式(动…...
VLAN(虚拟局域网)
一、vlan概述 VLAN(virtual local area network)是一种通过逻辑方式划分网络的技术,允许将一个物理网络划分为多个独立的虚拟网络。每一个vlan是一个广播域,不同vlan之间的通信需要通过路由器或三层交换机 [!注意] vlan是交换机独有的技术,P…...
Transformers without Normalization论文翻译
论文信息: 作者:Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址:arxiv.org/pdf/2503.10622 代码仓库:jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...
