STM32单片机WDG看门狗详解

news2024/11/15 16:10:12

文章目录

1. WDG简介

2. IWDG框图

3. IWDG键寄存器

4. IWDG超时时间

5. WWDG框图

6. WWDG工作特性

7. WWDG超时时间

8. IWDG和WWDG对比

9. 代码示例


1. WDG简介

WDG(Watchdog)看门狗

看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性。

看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号。

STM32内置两个看门狗

  • 独立看门狗(Independent WDG):独立运行(独立看门狗的时钟是专用的LSI,内部低速时钟),对时间精度要求低(只有一个最晚时间界限)
  • 窗口看门狗(Window WDG):要求看门狗在精确计时窗口起作用(喂狗时间有个最晚的界限,也有个最早的界限),使用APB1的时钟(没有专用时钟,不算独立)

2. IWDG框图

看门狗定时器溢出时会直接产生复位信号,然后执行喂狗操作,实质上是重置计数器。这是一个递减计数器,减到0后就会复位。因此,为了避免复位,在计数器减到0之前必须及时进行喂狗操作并把计数值加大。

  • 输入时钟LSI(内部低速时钟40KHz)后,时钟进入预分频器(8位,最大256分频)进行分频。预分频寄存器(Prescaler)配置分频系数后,经过预分频器分频后,时钟驱动递减计数器。计数器每次递减一个单位,另有计数器设为12位(2^12=4096)。当计数器减到0时,产生IWDG复位。为了避免复位,可以提前在重装载寄存器写一个值,这个过程和定时器的ARR(Auto Reloader)是一样的。当我们预先写好值之后,在运行过程中,我们在这个键寄存器里写一个特定的数据,控制电路进行喂狗。这时计数器会得到当前的计数器重装载,重新开始减计数。

  • 状态寄存器SR(只读寄存器)标志电路运行状态,只有两个更新同步位。

3. IWDG键寄存器

键寄存器本质上是控制寄存器,用于控制硬件电路的工作

在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率

写入键寄存器的值作用

0xCCCC

启用独立看门狗

0xAAAA

IWDG_RLR中的值重新加载到计数器(喂狗)

0x5555

解除IWDG_PR和IWDG_RLR的写保护

0x5555之外的其他值

启用IWDG_PR和IWDG_RLR的写保护

可以对RP、SR、RLR的写操作进行保护,只有在键寄存器写入5555,才能解除写保护,一旦写入其他值,PR和RLR再次被保护。这样PR和RLR就跟随键寄存器一起被保护了起来,防止误操作。 

4. IWDG超时时间

 

 

5. WWDG框图

窗口看门狗没有重装寄存器,直接在CNT写入数据就行。

时钟来源是PCLK1(APB1时钟默认36MHz),进入后先经过预分频器分频,然后驱动递减计数器(T5~T0这6位是有效的计数值,最高位T6用来作为溢出标志位 -> T6=1时,表示计数器溢出,0溢出)。如果T6位当成溢出标志位,低6位当作计数器,那么低6位的计数值减到0之后溢出。

WDGA是窗口看门狗的激活位,也就是使能。WDGA写入1,启用窗口看门狗。

喂狗最早时间窗口的实现流程:一旦我们执行写入CR操作时,那个与门开关就会打开,写入CR,就是写入计数器(喂狗),喂狗时比较器开始工作,一旦它比较,我们当前的计数器T6:0>窗口值W6:0,比较结果=1,闹过或门申请复位。把当前计数值和预设的窗口值进行比较,就会发现频次太高或太低,说明喂狗频次异常,就有问题,复位一下。

喂狗太晚,6位计数器减到0,复位。喂狗太早,计数器的值超过窗口值,复位。

6. WWDG工作特性

递减计数器T[6:0]的值小于0x40时,WWDG产生复位

递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位

递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位。

定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

唤醒中断(EWI):这个中断其实就是溢出的前一刻发生,也称作“死前中断”,马上就要溢出复位,再提醒一下,要不要干点啥,所以在这个早期唤醒中断里,我们一般可以用来执行一些紧急操作,比如保存重要数据,关闭危险设备等。

7. WWDG超时时间

8. IWDG和WWDG对比

IWDG独立看门狗WWDG窗口看门狗
复位

计数器减到0后

计数器T[5:0]减到0后、过早重装计数器

中断

早期唤醒中断

时钟源

LSI(40KHz)

PCLK1(36MHz)

预分频系数

4、8、32、64、128、256

1、2、4、8

计数器

12位

6位(有效计数)

超时时间

0.1ms~26214.4ms

113us~58.25ms

喂狗方式

写入键寄存器,重装固定值RLR

直接写入计数器,写多少重装多少

防误操作

键寄存器和写保护

用途

独立工作,对时间精度要求较低

要求看门狗在精确计时窗口起作用

9. 代码示例

STM32实现独立看门狗和窗口看门狗

STM32实现独立看门狗和窗口看门狗-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1859628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

钡铼技术BL101串口6路Modbus转MQTT网关加速智慧城市部署

随着物联网技术的飞速发展,如何高效地整合传统设备与现代云端系统,成为了亟待解决的关键问题。钡铼技术,作为物联网领域的硬件设备制造商,近期推出的BL101六路串口Modbus转MQTT网关,正以其独特优势,为智慧城…

LabVIEW在光学与光子学实验室中的应用

光学与光子学实验室致力于光学和光子学前沿领域的研究,涉及超快光学、非线性光学、光纤通信、光子晶体等多个方向。实验室需要高精度的实验控制和数据采集系统,以进行复杂的光学实验,并对实验数据进行实时处理和分析。 项目需求 实时控制与监…

CMDB详解及对企业的作用

CMDB即配置管理数据库(Configuration Management Database),是一种专门用于管理IT资产、配置信息和关系的数据库。CMDB以规划、监控、分析和存档企业的所有IT基础设施和应用程序为目的,成为企业IT管理和运营的重要工具。 CMDB的…

MySQL数据库(二):数据库基本操作

MySQL是一种流行的关系型数据库管理系统,广泛用于Web应用和各种数据存储需求。通过本次介绍,您将学习如何进行MySQL数据库的基本操作,包括创建数据库和表、插入和查询数据、更新和删除记录。这些基础知识将为您打下坚实的数据库操作基础。 目…

Hadoop04【集群环境搭建】

1 dfs.secondary.http.address hadoop-node01:50090 4.mapred-site.xml 首先需要将文件名称修改了。原文件名称为mapred-site.xml.template。指定MapReduce的资源调度方式为yarn。 mapreduce.framework.name yarn 5.yarn-site.xml 指定ResourceManager(yarn的老大)的地址和…

Maven编译打包时报“PKIX path building failed”异常

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 方法11.报错信息2.InstallCert.java3.生成证书文件 jssecacerts4.复制 jssecacerts 文件5. 然后重启Jenkins 或者maven即可 方法21.下载证书2. 导入证书执行keytool…

.NET使用原生方法实现文件压缩和解压

前言 在.NET中实现文件或文件目录压缩和解压可以通过多种方式来完成,包括使用原生方法(System.IO.Compression命名空间中的类)和第三方库(如:SharpZipLib、SharpCompress、K4os.Compression.LZ4等)。本文我…

排序算法(C语言版)

前言 排序作为生产环境中常见的需求之一,对整个产品有举足轻重的影响,可以说使用一个合适的排序算法是业务逻辑中比较重要的一部分。今天我们就来介绍常见的排序算法以及实现 排序 所谓排序无非就是按照特定的规则对一组数据就行顺序化。 常见的排序有…

柠檬班车载测试视频课程

这门课程将教授学员如何进行车载测试视频拍摄。学习者将学习如何选择合适的拍摄设备、构思拍摄场景、拍摄技巧和后期制作等内容。课程结合实例演练和个性化指导,帮助学员掌握车载测试视频拍摄的关键技能,提升视频制作能力。无论您是初学者还是有经验者&a…

从移动切换到电信IP:详细介绍两种方法

在当前的互联网环境中,用户可能会因为各种原因需要切换网络服务提供商,比如从移动切换到电信。这种切换不仅涉及到网络服务的变更,还可能意味着IP地址的改变。那么,移动的怎么切换成电信的IP?下面一起来了解一下吧。 方…

React:tabs或标签页自定义右击菜单内容,支持内嵌iframe关闭菜单方案

React:tabs或标签页自定义右击菜单内容,支持内嵌iframe关闭菜单方案 不管是react、vue还是原生js,原理是一样的。 注意如果内嵌iframe情况下,iframe无法使用事件监听,但是可以使用iframe的任何点击行为都会往父级wind…

Python | Leetcode Python题解之第169题多数元素

题目: 题解: class Solution:def majorityElement(self, nums: List[int]) -> int:count 0candidate Nonefor num in nums:if count 0:candidate numcount (1 if num candidate else -1)return candidate

查看es p12证书文件过期方法

查看证书过期时间: openssl pkcs12 -in elastic-certificates.p12 -nokeys -out elastic-certificates.crt (需要输入证书生成时配置密码) openssl x509 -enddate -noout -in elastic-certificates.crt

Elasticsearch 使用误区之一——将 Elasticsearch 视为关系数据库!

Elasticsearch 是一个强大的工具,尤其在全文检索、实时分析、机器学习、地理数据应用、日志和事件数据分析、安全信息和事件管理等场景有大量的应用。 然而,Elastic Stack 技术栈的选型及应用效能取决于正确的使用方式。选型错误或者误用 Elasticsearch …

如何在Windows系统部署Terraria私服并配置公网地址实现远程联机

文章目录 前言1. 下载Terraria私服2. 本地运行Terraria 私服3. 本地Terraria私服连接4. Windwos安装Cpolar 工具5. 配置Terraria远程联机地址6. Terraria私服远程联机7. 固定远程联机地址8. 固定的联机地址测试 前言 本文将为你详细介绍在本地如何运行泰拉瑞亚本地私服和结合C…

Recovery

Steal:允许未提交的事务写到磁盘上 Force:在事务提交之前该事务所有更新必须被写到磁盘上 No-StealForce 性能差,需要等待修改被写到磁盘上才能顺利commit 不需要undo,因为aborted事务不会被写到磁盘上 不需要redo&#xff0…

Ubuntu Apache2 搭建Gerrit 环境

一、前言 时隔多年,好久没有更新CSDN 博客了,主要原因有如下两点: 1、平时工作繁忙,无暇更新。 2、工作内容涉及信息安全,一些工作经验积累不便更新到互联网上。 最近一直在折腾搭建Gerrit 环境,最开始…

红酒邂逅时尚,品味生活的双重魅力,引领潮流新风尚

在繁华的都市中,红酒与时尚如同一对孪生姐妹,共同诠释着品味生活的双重魅力。红酒,那深邃的色泽中蕴藏着千年的历史与文化;时尚,那流转的光影中凝聚着时代的潮流与个性。当两者相遇,便碰撞出了特别的火花&a…

BEVDistill

摘要 将激光雷达检测器纳入多视图 3D 物体检测,在 BEV 空间中统一图像和激光雷达特征,让图像BEV特征自适应学习点云BEV特征。 背景 LiDAR 点可捕获精确的 3D 空间信息,为基于相机的目标检测提供自然指导。鉴于此,最近的相关工作…

Handling `nil` Values in `NSDictionary` in Objective-C

Handling nil Values in NSDictionary in Objective-C When working with Objective-C, particularly when dealing with data returned from a server, it’s crucial (至关重要的) to handle nil values appropriately (适当地) to prevent unexpected crashes. Here, we ex…