STM32的独立看门狗详解

目录

1.独立看门狗是什么?

2.独立看门狗的作用

3.独立看门狗的实现原理

4.独立看门狗用到的寄存器

4.1  IWDG_KR (关键字计时器)

4.2  IWDG_PR(预分频寄存器)

4.3  IWDG_RLR(重装载寄存器)

5.独立看门狗实现代码

5.1 初始化代码

5.2喂独立看门狗


1.独立看门狗是什么?

STM32的独立看门狗(Independent Watchdog,简称IWDG)是一个完全独立的低功耗硬件定时器,它由一个专用的低速时钟(LSI,Low Speed Internal clock)驱动。这个时钟是独立于主时钟系统的,因此即使在主时钟失效的情况下,独立看门狗依然能够继续工作。

2.独立看门狗的作用

STM32的独立看门狗的主要功能是监控MCU的运行状态,并在系统发生故障或死锁时,通过产生复位信号来重新启动系统。如果要保持系统不重启,需要通过不断地“喂狗”(即更新看门狗计数器的值)来实现。如果在预设的时间窗口内没有“喂狗”,那么看门狗计数器就会溢出,从而触发复位操作。

3.独立看门狗的实现原理

独立看门狗由内部低速时钟(LSI)驱动的,LSI实际时钟是一个 15~47Khz之间不精确的时钟,因为看门狗不需要那么高的精度,所以并不影响使用,独立看门狗其实就是一个十二位的计数器,只要这个计数器减少成0,就会触发MCU重启。

4.独立看门狗用到的寄存器

4.1  IWDG_KR (关键字计时器)

(1)在 IWDG_KR中写入 0xCCCC 开启独立看门狗

(2)在 IWDG_KR中写入 0xAAAA  ,IWDG_RLR 中的值就会被重新加载到独立看门狗的计数器,避免MCU发生重启。

(3)在IWDG_KR 中写入 0x5555 可以开启IWDG_PR 和 IWDG_RLR 寄存器的写入功能,因为这两个寄存器的写入功能是被保护的,需要先开启写入功能。

4.2  IWDG_PR(预分频寄存器)

IWDG_PR是存储独立看门狗分频系数的寄存器,最小为4分频,最高为256分频

4.3  IWDG_RLR(重装载寄存器)

这个寄存器的低12位有效,就是每次发生喂狗以后,被装载到独立看门狗计数器里面的值。

5.独立看门狗实现代码

5.1 初始化代码

void IWDG_Init(u8 prer,u16 rlr)
{IWDG_Handler.Instance=IWDG;IWDG_Handler.Init.Prescaler=prer;	//设置IWDG分频系数IWDG_Handler.Init.Reload=rlr;		//重装载值HAL_IWDG_Init(&IWDG_Handler);		//初始化IWDG  HAL_IWDG_Start(&IWDG_Handler);		//开启独立看门狗
}

这里prer我们传入的分频系数是IWDG_PRESCALER_64(也就是4),rlr重载值我们设置的是500,根据公式时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms),代入进去就是64*500/32=1000ms,得出定时器的倒计时时间为1秒,如果1秒内不发生喂狗,那么MCU就会被重启,我们平时做嵌套函数等耗时工作的时候一定要注意及时喂狗,避免系统正常运行中被重启

5.2喂独立看门狗

void IWDG_Feed(void)
{   HAL_IWDG_Refresh(&IWDG_Handler); 	//喂狗
}

这个函数HAL库已经帮我们实现好了,我们注意及时调用就可以了。

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

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

相关文章

程序的控制结构——if-else语句(双分支结构)【互三互三】

目录 🍁 引言 🍁if-else语句(双分支结构) 👉格式1: 👉功能: 👉程序设计风格提示: 👉例题 👉格式2: 👉…

ENSP防火墙综合配置

综合拓扑: 实验要求: 要求一 生产区的安全策略配置 办公区的安全策略 要求二 生产区的安全策略 游客和办公区的安全策略 因为ISP返回的数据包会被防火墙最后的默认安全策略给拒绝,所以,把要ISP返回的数据给允许通过 要求三 增加…

《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,欢迎多多交流。&am…

location匹配的优先级和重定向

nginx的重定向(rewrite) location 匹配 location匹配的就是后面的uri /wordpress 192.168.233.10/wordpress location匹配的分类和优先级 1.精确匹配 location / 对字符串进行完全匹配,必须完全符合 2.正则匹配 ^-前缀级别&#xff…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序

Java毕业设计 基于SSM vue电影订票系统小程序 微信小程序 SSM 电影订票系统小程序 功能介绍 用户 登录 注册 忘记密码 首页 图片轮播 电影信息 电影详情 评论 收藏 预订 电影资讯 资讯详情 用户信息修改 电影评价 我的收藏管理 用户充值 在线客服 我的订单 管理员 登录 个人…

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite ?二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了, Version 3.46.0 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是…

STM32-OC输出比较和PWM

本内容基于江协科技STM32视频内容,整理而得。 文章目录 1. OC输出比较和PWM1.1 OC输出比较1.2 PWM(脉冲宽度调制)1.3 输出比较通道(高级)1.4 输出比较通道(通用)1.5 输出比较模式1.6 PWM基本结…

批量制作word表格

问题背景 将excel表中的成绩内容制作为成绩单,每页对应一个学员的成绩,方便打印 代码实现 ## 导入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 读取 Excel 内容 df pd.read_e…

docker基础知识以及windows上的docker desktop 安装

记录以供备忘 基础概念: 什么是docker 将程序和环境一起打包,以在不同操作系统上运行的工具软件 什么是基础镜像 选一个基础操作系统和语言后,将对应的文件系统、依赖库、配置等打包为一个类似压缩包的文件,就是基础镜像 什么是…

基于FPGA的数字信号处理(15)--定点数的舍入模式(6)向0取整fix

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式:向上取整fix。 10进制数的fix fix:也叫 向0取整。它的舍入方式是数据往0的方向,舍入到最近的整数,比如1.75 fix到2&#xf…

【SQL】如何用SQL写透视表

【背景】 报表中有一大需求是透视表,目前有很多分析类应用也搭载了此类功能,那么我们能不能直接用SQL做透视表呢? 【分析】 BI类软件将透视表功能做在了前端,但是数据本身还是存储在数据库中,所以必然有方法可以用SQL直接实现透视表。 【心法】 透视表是任意选取一个…

LVS集群及其它的NAT模式

1.lvs集群作用:是linux的内核层面实现负载均衡的软件;将多个后端服务器组成一个高可用、高性能的服务器的集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上,通过这种方式实现高可用和负载均衡。 2.集群和分布式&#…

开源项目的认识理解

目录 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 2.开源的经验分享(向大佬请教与上网查询) 3.开源项目的挑战 开源项目有哪些机遇与挑战? 1.开源项目的发展趋势 1. 持续增长与普及 - 开源项目将继续增长&#xff0c…

Java客户端调用SOAP方式的WebService服务实现方式分析

简介 在多系统交互中,有时候需要以Java作为客户端来调用SOAP方式的WebService服务,本文通过分析不同的调用方式,以Demo的形式,帮助读者在生产实践中选择合适的调用方式。 本文JDK环境为JDK17。 结论 推荐使用Axis2或者Jaxws&#…

3款自己电脑就可以运行AI LLM的项目

AnythingLLM、LocalGPT和PrivateGPT都是与大语言模型(LLM)相关的项目,它们允许用户在本地环境中与文档进行交互,但它们在实现方式和特点上存在一些差异。AnythingLLM使用Pinecone和ChromaDB来处理矢量嵌入,并使用OpenA…

Flask项目搭建及部署 —— Python

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目: 创建完成后整个项目结构树: app.py: 项⽬管理⽂件,通过它管理项⽬。 static: 存放静态…

Visio 2019 中文版安装下载教程【32/64位】,图文步骤详解,超简单,无套路!!!

文章目录 前言软件介绍软件下载安装步骤激活步骤 前言 本文针对visio 2019 的下载安装进行详细讲解,没有任何套路,大家可以放心使用,由于该类文章容易被和谐,大家可以收藏关注,以免迷路,若安装出现问题&am…

ubuntu重装系统后,安装cuda,cudnn

一、 先安装驱动,如果驱动安装不成功,会影响桌面,再重装系统还来得及,尝试了很多方法,还是用系统安装最靠谱: 首先进入Ubuntu搜索栏目,找到软件更新器的一个图标,点开之后是这样的。…

电力需求预测挑战赛笔记 Taks1 跑通baseline

#AI夏令营 #Datawhale #夏令营 赛题 一句话介绍赛题任务可以这样理解赛题: 【训练时序预测模型助力电力需求预测】 电力需求的准确预测对于电网的稳定运行、能源的有效管理以及可再生能源的整合至关重要。 赛题任务 给定多个房屋对应电力消耗历史 N 天的相关序列数…