当前位置: 首页 > article >正文

STM32学习之WWDG(原理+实操)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处

文章目录

    • WWDG工作原理
    • WWDG关键寄存器
    • 上窗口值和下窗口值
    • 问答
      • WWDG使能后,递减计数器就开始工作了是吗?
      • 上窗口值为0x5f,计数器初始值设置为0x7f,那么计数器递减到什么时候开始喂狗?
      • 是减到0x5e,立马就喂狗吗?
      • 所以如果上窗口值设置的比较小,喂狗很可能来不及完成吗?


WWDG工作原理

WWDG 内部有一个递减计数器,从设定的初始值开始向下计数。它设定了一个特定的时间窗口,系统必须在这个窗口内完成特定的操作或响应,即计数器值必须落在有效刷新时间窗口内时才能成功喂狗。如果计数器计数到 0 时,未及时刷新,或者在计数器值大于上窗口阈值时就进行刷新,都会触发系统复位。

WWDG关键寄存器

以 STM32 为例,窗口看门狗的功能通过以下寄存器配置实现:
控制寄存器(WWDG_CR)
位 7(WDGA):使能看门狗功能。
位 6:0(W [6:0]):设置上窗口阈值,决定有效刷新时间窗口的上限。
配置寄存器(WWDG_CFR)
位 8:7(EWI):使能提前唤醒中断(当计数器值降至 0x40 时触发中断,用于提前提醒程序刷新看门狗)。
位 6:0(T [6:0]):设置计数器时钟分频系数,用于调整计数器递减速度。
状态寄存器(WWDG_SR)
仅 1 位(EWIF):记录提前唤醒中断是否发生,需软件清零。

上窗口值和下窗口值

上窗口值和下窗口值是决定其有效刷新时间范围的核心参数,二者共同定义了一个 “时间窗口”,程序必须在该窗口内完成 “喂狗”(刷新计数器)操作,否则将触发系统复位。

下窗口值:是一个固定不变的阈值,在大多数微控制器(如 STM32)中,其值固定为 0x40。
上窗口值:是一个可通过寄存器配置的阈值,代表有效刷新时间窗口的上限。
在 STM32 中,上窗口值由 WWDG_CR 寄存器的 W [6:0] 位 定义,取值范围为 0x40 < 上窗口值 ≤ 0x7F(即 65~127,共 63 个可选值)。

程序必须在计数器值从初始值递减至小于等于上窗口值,且大于下窗口值(0x40)时进行刷新。
过早刷新(计数器值 > 上窗口值时刷新)会被视为无效操作,同样会触发复位。

问答

WWDG使能后,递减计数器就开始工作了是吗?

是的,WWDG 使能后,递减计数器就开始工作

上窗口值为0x5f,计数器初始值设置为0x7f,那么计数器递减到什么时候开始喂狗?

当计数器递减到小于 0x5F 且大于等于 0x40 时就可以开始喂狗。即计数器从 0x7F 开始递减,减到 0x5E 及以下(但不小于 0x40)时,就进入了可以喂狗的窗口范围。

是减到0x5e,立马就喂狗吗?

窗口看门狗的喂狗时机是在计数器的值处于上窗口值和下窗口值之间时进行。当计数器从初始值 0x7F 递减到 0x5E 时,已经进入了可喂狗的窗口范围,但具体的喂狗时机可以根据程序的实际情况来决定,只要在计数器递减到 0x40 之前完成喂狗操作,就可以避免看门狗复位。

所以如果上窗口值设置的比较小,喂狗很可能来不及完成吗?

上窗口值决定了喂狗窗口的起始时间。上窗口值较小,意味着计数器从初始值递减到可喂狗窗口的时间较短,留给程序执行到喂狗代码的时间就少。例如,若初始值为 0x7F,上窗口值设为 0x45,计数器从 0x7F 递减到 0x45 很快,可能程序还未执行到喂狗部分,计数器就已经接近或达到下窗口值 0x40 了,容易导致喂狗来不及。

相关文章:

STM32学习之WWDG(原理+实操)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

Keil MDK5.37或更高版本不再预装ARM Compiler Version5导致编译错误的解决方法

Keil MDK5.37预装的是最新的ARM Compiler Version6 我们可以先右击查看工程属性 在Target标签下&#xff0c;我们可以看到Compiler Version5就是丢失的 在Target标签下&#xff0c;我们可以看到Compiler Version5就是丢失的 图1 以固件库方式编程&#xff0c;编译之后全是错…...

【iOS(swift)笔记-14】App版本不升级时本地数据库sqlite更新逻辑二

App版本不升级时&#xff0c;又想即时更新本地数据库怎么办&#xff1f; 办法二&#xff1a;从服务器下载最新的sqlite数据替换掉本地的数据&#xff08;注意是数据不是文件&#xff09; 稍加调整&#xff0c; // &#xff01;&#xff01;&#xff01;注意&#xff01;&…...

前端性能优化:提升用户体验的关键策略

引言 在当今快速发展的互联网时代&#xff0c;用户对网页加载速度和交互流畅度的要求越来越高。前端性能优化已成为提升用户体验、降低跳出率、提高转化率的关键因素。本文将深入探讨前端优化的核心策略和实践方法&#xff0c;帮助开发者构建更快、更高效的Web应用。 一、网络…...

Unity-UI组件详解

今天我们来学习Unity的UI的详解&#xff0c;这部分的内容相对较少&#xff0c;对于程序员来说主要的工作是负责将各种格式的图片呈现在显示器上并允许操作这些图片。 本篇帖子的理论依据依然是官方开源的UGUI代码&#xff0c;网址为&#xff1a;GitHub - Unity-Technologies/u…...

基于大模型的短暂性脑缺血发作(TIA)全流程预测与干预系统技术方案

目录 一、系统架构总览二、核心模块详细设计三、系统集成方案四、系统部署拓扑图五、技术验证方案六、健康管理子系统七、安全与合规设计技术指标与性能保障八、HL7 FHIR接口规范九、分层蒸馏方案十、多中心RCT研究设计十一、硬件选型成本优化方案跨模块集成工作流一、系统架构…...

嵌入式学习 D31:系统编程--Framebuf帧缓冲

&#xff08;1&#xff09;framebuf帧缓冲 &#xff1a;linux提供的显示设备驱动的接口。 设备路径 &#xff1a; 设备/dev/fb0 * 分辨率&#xff1a;像素点是w * h。 每个像素点色深 RGB&#xff1a;0-255 红绿蓝各3字节&#xff08;byte&#xff09;即可描述色深。…...

黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐

简历上展示黑马点评 完整代码地址 项目描述 黑马点评项目是一个springboot开发的前后端分离项目&#xff0c;使用了redis集群、tomcat集群、MySQL集群提高服务性能。类似于大众点评&#xff0c;实现了短信登录、商户查询缓存、优惠卷秒杀、附近的商户、UV统计、用户签到、好…...

Java 大视界 -- Java 大数据在智能安防视频监控中的异常事件快速响应与处理机制(273)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

【数据库】安全性

数据库安全性控制的常用方法&#xff1a;用户标识和鉴定、存取控制、视图、审计、数据加密。 1.用户标识与鉴别 用户标识与鉴别(Identification & Authentication)是系统提供的最外层安全保护措施。 2.存取控制 2.1自主存取控制(简称DAC) (1)同一用户对于不同的数据对…...

【图像处理入门】4. 图像增强技术——对比度与亮度的魔法调节

摘要 图像增强是改善图像视觉效果的核心技术。本文将详解两种基础增强方法&#xff1a;通过直方图均衡化拉伸对比度&#xff0c;以及利用伽马校正调整非线性亮度。结合OpenCV代码实战&#xff0c;学会处理灰度图与彩色图的不同增强策略&#xff0c;理解为何彩色图像需在YUV空间…...

D2-基于本地Ollama模型的多轮问答系统

本程序是一个基于 Gradio 和 Ollama API 构建的支持多轮对话的写作助手。相较于上一版本&#xff0c;本版本新增了对话历史记录、Token 计数、参数调节和清空对话功能&#xff0c;显著提升了用户体验和交互灵活性。 程序通过抽象基类 LLMAgent 实现模块化设计&#xff0c;当前…...

HALCON 深度学习训练 3D 图像的几种方式优缺点

HALCON 深度学习训练 3D 图像的几种方式优缺点 ** 在计算机视觉和工业检测等领域&#xff0c;3D 图像数据的处理和分析变得越来越重要&#xff0c;HALCON 作为一款强大的机器视觉软件&#xff0c;提供了多种深度学习训练 3D 图像的方式。每种方式都有其独特的设计思路和应用场…...

123网盘SDK-npm包已发布

前言 大家好&#xff01;今天想和大家分享一个我最近开源的项目&#xff1a;123 网盘 SDK。这个项目已经在 GitHub 开源&#xff0c;最近已经发布到 NPM&#xff0c;可以通过 npm i ked3/pan123-sdk 直接安装使用。 项目背景&#xff1a;为什么要开发这个 SDK&#xff1f; 在…...

强制卸载openssl-libs导致系统异常的修复方法

openssl升级比较麻烦&#xff0c;因为很多软件都会依赖它&#xff0c;一旦强制卸载(尤其是openssl-libs.rpm)&#xff0c;就可能导致很多命令不可用&#xff0c;即使想用rpm命令重新安装都不行。 所以&#xff0c;除非万不得已&#xff0c;否则不要轻易去卸载openssl-libs。而且…...

乐播视频v4.0.0纯净版体验:高清流畅的视听盛宴

先放软件下载链接:夸克网盘下载 探索乐播视频v4.0.0纯净版&#xff1a;畅享精彩视听之旅 乐播视频v4.0.0纯净版为广大用户带来了优质的视频观看体验&#xff0c;是一款值得关注的视频类软件。 这款软件的资源丰富度令人惊喜&#xff0c;涵盖了电影、电视剧、综艺、动漫等多种…...

Linux 命令全讲解:从基础操作到高级运维的实战指南

Linux 命令全讲解&#xff1a;从基础操作到高级运维的实战指南 前言 Linux 作为开源操作系统的代表&#xff0c;凭借其稳定性、灵活性和强大的定制能力&#xff0c;广泛应用于服务器、云计算、嵌入式设备等领域。对于开发者、运维工程师甚至普通用户而言&#xff0c;熟练掌握…...

FreeRTOS的简单介绍

一、FreeRTOS介绍 FreeRTOS并不是实时操作系统&#xff0c;因为它是分时复用的 利用CubeMX快速移植 二、快速移植流程 1. 在 SYS 选项里&#xff0c;将 Debug 设为 Serial Wire &#xff0c;并且将 Timebase Source 设为 TIM2 &#xff08;其它定时器也行&#xff09;。为何…...

DeepSeek模型安全部署与对抗防御全攻略

引言 随着DeepSeek模型在企业关键业务中的深入应用,模型安全已成为不可忽视的重要议题。本文将从实际攻防对抗经验出发,系统剖析DeepSeek模型面临的安全威胁,提供覆盖输入过滤、输出净化、权限控制等环节的立体防御方案,并分享红蓝对抗中的最佳实践,助力企业构建安全可靠…...

Docker容器使用手册

Docker是一种轻量级、可移植、自给自足的软件运行环境&#xff0c;用于打包和运行应用程序。它允许开发者将应用及其所有依赖打包成一个镜像&#xff08;Image&#xff09;&#xff0c;然后基于这个镜像创建出容器&#xff08;Container&#xff09;来运行。与虚拟机相比不需要…...

深入解析C++引用:从别名机制到函数特性实践

1.C引用 1.1引用的概念和定义 引用不是新定义⼀个变量&#xff0c;而是给已存在变量取了⼀个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同⼀块内存空间。比如四大名著中林冲&#xff0c;他有一个外号叫豹子头&#xff0c;类比到C里就…...

Fuse.js:打造极致模糊搜索体验

Fuse.js 完全学习指南&#xff1a;JavaScript模糊搜索库 &#x1f3af; 什么是 Fuse.js&#xff1f; Fuse.js 是一个轻量、强大且无依赖的JavaScript模糊搜索库。它提供了简单而强大的模糊搜索功能&#xff0c;可以在任何 JavaScript 环境中使用&#xff0c;包括浏览器和 Nod…...

MyBatis分页插件(以PageHelper为例)与MySQL分页语法的关系

MyBatis分页插件&#xff08;以PageHelper为例&#xff09;与MySQL分页语法关系总结 MyBatis的分页插件&#xff08;如PageHelper&#xff09;底层实现依赖于数据库的分页语法。对于MySQL数据库来说&#xff0c;其分页逻辑最终会转化为LIMIT语句&#xff0c;下面展开详细说明&…...

CentOS 7.9 安装 宝塔面板

在 CentOS 7.9 上安装 宝塔面板&#xff08;BT Panel&#xff09; 的完整步骤如下&#xff1a; 1. 准备工作 系统要求&#xff1a; CentOS 7.x&#xff08;推荐 7.9&#xff09;内存 ≥ 1GB&#xff08;建议 2GB&#xff09;硬盘 ≥ 20GBroot 权限&#xff08;需使用 root 用户…...

使用Redis作为缓存优化ElasticSearch读写性能

在现代数据密集型应用中&#xff0c;ElasticSearch凭借其强大的全文搜索能力成为许多系统的首选搜索引擎。然而&#xff0c;随着数据量和查询量的增长&#xff0c;ElasticSearch的读写性能可能会成为瓶颈。本文将详细介绍如何使用Redis作为缓存层来显著提升ElasticSearch的读写…...

项目交付后缺乏回顾和改进,如何持续优化

项目交付后缺乏回顾和改进可通过建立定期回顾机制、实施反馈闭环流程、开展持续学习和培训、运用数据驱动分析、培养持续改进文化来持续优化。 其中&#xff0c;实施反馈闭环流程尤其重要&#xff0c;它能够确保反馈信息得到有效传递、处理与追踪&#xff0c;形成良好的改进生态…...

从0开始学习R语言--Day15--非参数检验

非参数检验 如果在进行T检验去比较两组数据差异时&#xff0c;假如数据里存在异常值&#xff0c;会把数据之间的差异拉的很大&#xff0c;影响正常的判断。那么这个时候&#xff0c;我们可以尝试用非参数检验的方式来比较数据。 假设我们有A&#xff0c;B两筐苹果&#xff0c…...

Linux或者Windows下PHP版本查看方法总结

确定当前服务器或本地环境中 PHP 的版本,可以通过以下几种方法进行操作: 1. 通过命令行检查 这是最直接且常用的方法,适用于本地开发环境或有 SSH 访问权限的服务器。 方法一:php -v 命令 php -v输出示例:PHP 8.1.12 (cli) (built: Oct 12 2023 12:34:56) (NTS) Copyri…...

EC2 实例详解:AWS 的云服务器怎么玩?☁️

弹性计算、灵活计费、全球可用&#xff0c;AWS EC2 全攻略 在 AWS 生态中&#xff0c;有两个核心服务是非常关键的&#xff0c;一个是 S3&#xff08;对象存储&#xff09;&#xff0c;另一个就是我们今天的主角 —— Amazon EC2&#xff08;Elastic Compute Cloud&#xff09…...

第三发 DSP 点击控制系统

背景 ​ 在第三方 DSP 上投放广告&#xff0c;需要根据 DP Link 的点击次数进行控制。比如当 DP Link 达到 5000 后&#xff0c;后续的点击将不能带来收益&#xff0c;但是后续的广告却要付出成本。因此需要建立一个 DP Link 池&#xff0c;当 DP Link 到达限制后&#xff0c;…...