STM32单片机WDG看门狗详解

文章目录

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.mzph.cn/pingmian/34609.shtml

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

相关文章

2024年6月24日 语法纠正

修改前的 So happy to see you again in our English Corner. Today, we have our old friend Fannie come with us and Ms. Liang is also here. Because today we use this new meeting material at first time, I arbitrarily assgin the roles according to everyone’s r…

Docker Compose--安装Nginx--方法/实例

原文网址:Docker Compose--安装Nginx--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker Compose如何安装Nginx。 目录结构 ├── config │ ├── cert │ │ ├── xxx_bundle.pem │ │ └── xxx.key │ ├── conf.d │ …

【ONLYOFFICE震撼8.1】ONLYOFFICE8.1版本桌面编辑器测评

随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找一款具有强大功能和便捷使用的办公软件。在这个时候,ONLYOFFICE 8.1应运而生,成为了许多用户的新选择。ONLYOFFICE 8.1是一种办公套件软件,它提供了文档处理、电子表格…

jupyter中如何看plt.plot的局部细节

在Jupyter中使用matplotlib时,如果你想要放大图表的某一部分,可以使用matplotlib的交互式方式查看局部细节。 %matplotlib notebook # 在Jupyter中使用交互式后端 import matplotlib.pyplot as plt import numpy as np# 生成数据 x np.linspace(0, 10…

TiDB 资源管控的对撞测试以及最佳实践架构

作者: GreenGuan 原文来源: https://tidb.net/blog/bc405c21 引言 TiDB 是一个存算分离的架构,资源管控对这种分离的架构来说实现确实有非常大的难度,TiDB 从 7.1 版本开始引入资源管控的概念,在社区也有不少伙伴测…

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

文章目录 1. WDG 2. IWDG独立看门狗 2.1 main.c 3. WWDG窗口看门狗 3.1 main.c 1. WDG 对于WDG看门狗的详细解析可以看下面这篇文章: STM32单片机WDG看门狗详解-CSDN博客 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原…

论文速递 | Management Science 4月文章合集(下)

编者按 在本系列文章中,我们梳理了运筹学顶刊Management Science在2024年4月份发布有关OR/OM以及相关应用的13篇文章的基本信息,旨在帮助读者快速洞察领域新动态。本文为第二部分(2/2)。 推荐文章1 ● 题目:Social Le…

模拟面试之外卖点单系统(高频面试题目mark)

今天跟大家分享一个大家简历中常见的项目-《外卖点单系统》,这是一个很经典的项目,有很多可以考察的知识点和技能点,但大多数同学都是学期项目,没有实际落地,对面试问题准备不充分,回答时抓不到重点&#x…

SpringBoot中使用MQTT实现消息的订阅和发布

SpringBoot中使用MQTT实现消息的订阅和发布 背景 java框架SpringBoot通过mQTT通信 控制物联网设备 还是直接上代码 第一步依赖&#xff1a; <!--mqtt相关依赖--><dependency><groupId>org.springframework.integration</groupId><artifactId>s…

百度百科词条创建的前提条件

随着互联网的发展&#xff0c;人们获取信息越来越依赖于搜索引擎&#xff0c;而百度百科作为百度搜索的核心产品在百度中一般能够稳居首位&#xff0c;而且百科词条具有权威性&#xff0c;可信度比较高&#xff0c;非常适用于企业和人物的形象宣传。 最近&#xff0c;小马识途营…

JS-数组扁平化方法合集(递归,while循环,flat)

前言 数组扁平化也是面试常考题之一&#xff0c;今天就和大家简单分享一下常见的数组扁平方法。这题其实主要考察的是递归思想&#xff0c;因为当数组里面嵌套非常多层数组的时候只能通过循环递归来进行扁平。本次分享主要也是分享本题的递归思想。话不多说&#xff0c;开始分…

基于Spring Boot构建淘客返利平台

基于Spring Boot构建淘客返利平台 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过…

计算机网络地址划分A-E(自学)

1、网络地址组成 &#xff08;1&#xff09;物理地址MAC&#xff08;Media Access Control Address&#xff09; 网卡生产商分配&#xff0c;全球唯一&#xff0c;48/64位二进制 &#xff08;2&#xff09;逻辑地址IP(Internet Protocol) 网络层地址&#xff0c;用于在不同网…

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…

VBA递归过程快速组合数据

实例需求&#xff1a;数据表包含的列数不固定&#xff0c;有的列&#xff08;数量和位置不固定&#xff09;包含组合数据&#xff0c;例如C2单元格为D,P&#xff0c;说明Unit Config有两种分别为D和P&#xff0c;如下图所示。 现在需要将所有的组合罗列出来&#xff0c;如下所示…

git上传本地项目及更新项目

1、注册GitHub账号和下载git 2、在GitHub上新建一个仓库&#xff0c;点击号——>New repository&#xff0c;给仓库起一个名字&#xff0c;点击Create repository 3、进入要上传的项目中&#xff0c;右键点击git back here&#xff0c;命令行输入git init初始化&#xff0c…

19、复杂链表的复制?、 二叉搜索树与双向链表

题目&#xff1a; 复杂链表的复制&#xff1f; 描述&#xff1a; 输入一个复杂链表&#xff08;每个节点中有节点值&#xff0c;以及两个指针&#xff0c;一个指向下一个节点&#xff0c; 另一个特殊指针指向任意一个节点&#xff09;&#xff0c;返回结果为复制后复杂链表的h…

全球电力电子测试方案专业提供商「艾诺仪器」×企企通召开项目启动会,推进企业采购数智化升级

导读 供应链管理已成为企业的核心竞争力之一&#xff0c;为应对快速变化的市场环境&#xff0c;艾诺仪器亟需强化采购管理和供应链协同的竞争力。SRM涉及到各事业部、各所属企业等多个层面&#xff0c;希望通过双方优势资源的整合&#xff0c;打造高效协同、科学智能的数字化采…

第十三站:Java蓝宝石——云计算的浩瀚天空

Java作为一门成熟且广泛使用的编程语言&#xff0c;在云计算领域扮演着重要的角色。以下是对Java在云计算领域应用的详细讲解&#xff1a; 云服务提供商的Java SDK: Amazon Web Services (AWS): 提供了AWS SDK for Java&#xff0c;允许开发者在Java应用程序中轻松集成AWS服务&…

数据挖掘概览

数据挖掘(Data Mining)就是从大量的,不完全的,有噪声的,模糊的,随机的实际应用数据中,提取隐含在其中的,人们事先不知道的,但又是潜在有用的信息和知识的过程. 预测性数据挖掘 分类 定义&#xff1a;分类就是把一些新的数据项映射到给定类别中的某一个类别 分类流程&#x…