STM32 IWDG(独立看门狗)
1 IWDG简介
STM32有两个看门狗:一个是独立看门狗(IWDG),另外一个是窗口看门狗。独立看门狗也称宠物狗,窗口看门狗也称警犬。本文主要分析独立看门狗的功能和它的应用。
独立看门狗用通俗一点的话来解释就是一个12位的递减计数器,当计数器的值从某个值一直减到0的时候,系统就会产生一个复位信号,即IWDG_RESET。如果在计数器没减到0之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的“喂狗”。看门狗功能由VDD供电,在停止模式和待机模式下仍能工作。
2 IWDG功能框图剖析
IWDG功能框图如下图所示:
2.1 独立看门狗时钟
独立看门狗的时钟由独立的RC震荡器LSI提供,即使主时钟发生故障它仍然有效,非常独立。LSI的频率一般为30~60kHz,根据温度和工作场合情况有一定的漂移。我们一般取40kHz,所以独立看门狗的定时时间不是非常精确,只适用于对时间精度要求比较低的场合。
2.2 计数器时钟
递减计数器的时钟由LSI经过一个8位的预分频器得到,我们可以操作预分频器寄存器IWDG_PR来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256],计数器时钟CK_CNT=40/4×2^PRV,一个计数器时钟周期计数器就减一。
2.3 计数器
独立看门狗的计数器是一个12位的递减计数器,最大值为0XFFF。当计数器减到0时,会产生一个复位信号IWDG_RESET,让程序重新启动运行。如果在计数器减到0之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作俗称“喂狗”。
2.4 重装载寄存器
重装载寄存器是一个12位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定独立看门狗的溢出时间。超时时间Tout=(4×2^prv)/40×rlv(s),prv是预分频器寄存器的值,rlv是重装载寄存器的值。
2.5键寄存器
键寄存器IWDG_KR可以说是独立看门狗的一个控制寄存器,主要有三种控制方式,往这个寄存器写入下面3个不同的值有不同的效果。
键值 | 键值作用 |
0XAAAA | 把RLR的值重装载到CNT |
0X5555 | PR和RLR这两个寄存器可写 |
0XCCCC | 启动 IWDG |
通过写往键寄存器写0XCCCC来启动看门狗属于软件启动的方式,一旦独立看门狗启动,它就关不掉,只有复位才能关掉它。
2.6 状态寄存器
状态寄存器SR只有位0,PVU和位1:RVU有效,这两位只能由硬件操作,软件操作不了。
RVU:看门狗计数器重装载值更新,硬件置1表示重装载值的更新正在进行中,更新完毕之后由硬件清0.
PVU:看门狗预分频值更新,硬件置1指示预分频值的更新正在进行中,当更新完成后,由硬件清0。
所以只有当RVU、PVU都等于0的时候,才可以更新重装载寄存器和预分频寄存器。
3 如何使用IWDG
独立看门狗一般用来检测和解决由程序引起的故障,比如一个程序正常运行的时间是50ms,在运行完这段程序之后紧接着进行喂狗,我们设置独立看门狗的定时溢出时间为60ms,比我们需要监控的程序50ms多一点。如果超过60ms还没有喂狗,那就说明我们的监控程序出故障了,运行出意外了,那么就会产生系统复位,让程序重新运行。
3.1 IWDG 配置函数
void IWDG_Config(uint8_t prv,uint16_t rlv)
{//使能预分频寄存器PR和重装载寄存器RLR可写IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//设置预分频器值IWDG_SetPrescaler(prv);//设置重装载寄存器值IWDG_RetReload(rlv);//把重装载寄存器的值放到计数器中IWDG_ReloadCounter();//使能IWDGIWDG_Enable();}
IWDG配置函数有两个形参,prv用来设置预分频的值,可取值如下:
/*
* @arg IWDG_Prescaler_4: IWDG 预分频值设置为4
* @arg IWDG_Prescaler_8: IWDG 预分频值设置为8
* @arg IWDG_Prescaler_16: IWDG 预分频值设置为16
* @arg IWDG_Prescaler_32: IWDG 预分频值设置为32
* @arg IWDG_Prescaler_64: IWDG 预分频值设置为64
* @arg IWDG_Prescaler_128: IWDG 预分频值设置为128
* @arg IWDG_Prescaler_256: IWDG 预分频值设置为256
*/
如果我们需要设置1s的超时溢出,prv可以取IWDG_Prescaler_64,rlv取625,即调用IWDG使得Tout=64/40*625=1s。
3.2 喂狗函数
void IWDG_Feed(void)
(//把重装载寄存器的值放到计数器中,喂狗,防止IWDG复位//当计数器的值减到0的时候会产生系统复位IWDG_ReloadCounter();
)
3.3 main函数
int main(void)
{//配置LED GPIO,并关闭LEDLED_GPIO_Config();Delay(0X8FFFFF);//——————————————————————————————————————————————————————————//检查是否为独立看门狗复位if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST)!=RESET){//独立看门狗复位//亮红灯LED_RED;//清除标志RCC_ClearFlag();//如果一直不能喂狗,会一直复位,加上前面的延时,会看到红灯闪烁//在1s时间内喂狗的话,则会持续亮绿灯}else{//不是看门狗复位(可能为上电复位或者手动按键复位之类的操作)//亮蓝灯LED_BLUE;}//————————————————————————————————————————————————————————————//配置按键GPIOKey_GPIO_Config();//IWDG 1s超时溢出IWDG_Config(IWDG_Prescaler_64,625);//while部分是我们在项目中具体要写的代码,这部分的程序可以用独立看门狗来监控//如果我们知道这部分代码执行的时间,比如500ms,那么我们可以设置独立看门狗的溢出时间是600ms//比500ms多一点,如果要被监控的程序没出意外,正常执行的话,那么执行完毕之后就会执行喂狗程序//如果程序出意外了那程序就会超时,到达不了喂狗的程序,此时就会产生系统复位。//但是也不排除程序出意外了又恢复正常了,刚好喂狗了,歪打正着。所以要想更精确得监控程序//可以使用窗口看门狗,窗口看门狗规定必须在规定的窗口时间内喂狗while(1){//这里添加需要被监控的代码,如果有就去掉按键模拟喂狗,把按键扫描程序去掉//——————————————————————————————————————————————————————————————if(Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN)==KEY_ON){//喂狗,如果不喂狗,系统就会复位,LED1就会灭一次//如果在1s时间内准时喂狗的话,则绿灯会亮,否则红灯闪烁IWDG_Feed();//喂狗后亮绿灯LED_GREEN;}}//———————————————————————————————————————————————————————————————
}
相关文章:
STM32 IWDG(独立看门狗)
1 IWDG简介 STM32有两个看门狗:一个是独立看门狗(IWDG),另外一个是窗口看门狗。独立看门狗也称宠物狗,窗口看门狗也称警犬。本文主要分析独立看门狗的功能和它的应用。 独立看门狗用通俗一点的话来解释就是一个12位的…...
ios swift5 获取wifi列表
参考博客: iOS之Wifi开发探究 - 稀土掘金 iOS 无法获取 WiFi 列表?一定是因为你不知道这个框架 - 稀土掘金 iOS获取Wifi列表详解 - 简书...
回溯法c++学习 解决八皇后问题
使用回溯法解决八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在88 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。这…...
5. Spring IoCDI ★ ✔
5. Spring IoC&DI 1. IoC & DI ⼊⻔1.1 Spring 是什么?★ (Spring 是包含了众多⼯具⽅法的 IoC 容器)1.1.1 什么是容器?1.1.2 什么是 IoC?★ (IoC: Inversion of Control (控制反转))总…...
数据库自动备份到gitee上,实现数据自动化备份
本人有个不太好的习惯,每次项目的数据库都是在线上创建,Navicat 连接线上数据库进行处理,最近有一个项目需要二次升级,发现老项目部署的服务器到期了,完蛋,数据库咩了!!!…...
探索 Spring Cloud Gateway:构建微服务架构的关键一环
1. 简介 在当今的分布式系统中,微服务架构已经成为了一种流行的架构模式。在微服务架构中,服务被拆分为小型、可独立部署的服务单元,这些服务单元能够通过网络互相通信,形成一个整体的应用系统。然而,随着微服务数量的…...
P1114 “非常男女”计划最优解
原题地址 P1114 “非常男女”计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码题解 AC代码(1) 因为用的是级的算法,所以最后一个 了,这里使用特判来得到的,给你们放一下代码: #include <bi…...
C++ | Leetcode C++题解之第187题重复的DNA序列
题目: 题解: class Solution {const int L 10;unordered_map<char, int> bin {{A, 0}, {C, 1}, {G, 2}, {T, 3}}; public:vector<string> findRepeatedDnaSequences(string s) {vector<string> ans;int n s.length();if (n < L…...
构建、标记和发布镜像
构建、标记和发布镜像 目录 构建镜像标记镜像发布镜像实践 设置构建镜像推送镜像 在本指南中,您将学习以下内容: 构建镜像:基于Dockerfile构建镜像的过程。标记镜像:为镜像命名的过程,这也决定了镜像的分发位置。发…...
[Go Web] Kratos 使用的简单总结
文章目录 1.Kratos 简介2.传输协议3.日志4.错误处理5.配置管理6.wire 1.Kratos 简介 Kratos并不绑定于特定的基础设施,不限定于某种注册中心,或数据库ORM等,所以您可以十分轻松地将任意库集成进项目里,与Kratos共同运作。 API -&…...
首个实时 AI 视频生成技术发布;科大讯飞发布星火大模型 4.0 丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...
什么是容器镜像
什么是容器镜像? 1. 容器镜像的两个重要原则 容器镜像是容器化应用程序的基础,它包含了运行应用程序所需的一切——代码、运行时、库和依赖项。理解容器镜像的两个重要原则非常重要: 不可变性:容器镜像一旦构建,就不…...
ElasticSearch-Windows系统ElasticSearch(ES)的下载及安装
前言 下载ElasticSearch 可以进入ElasticSearch官方下载地址,选择与电脑系统相对应的版本;博主已经上传资源,或者点此直接免费下载,本次演示版本为8.14.1。 注意: Elasticsearch 5 需要 Java 8 以上版本;…...
【应用开发二】GPIO操控(输出、输入、中断)
1 操控GPIO方式 控制目录:/sys/class/gpio /sys/class/gpio目录下文件如下图所示: 1.1 gpiochipX目录 功能:当前SoC所包含的所有GPIO控制器 i.mx6ull一共包含5个GPIO控制器,分别为GPIO1~5分别对应gpiochip0、gpiochip32、gpi…...
单点登录方法
一、父域cookie:两个有相同父域名的二级域名之间可以跨域传递cookie //注意该接口的地址也是baidu.com下属的二级域名:a.baidu.com //全部接口地址为:a.baidu.com/dev-api/system/ecdWeb/login。如果不是a.baidu.com那么根本带不过去 //其实可以理解为通过该方法将cookie传给…...
springboot集成JPA并配置hikariCP连接池问题解决
一、引入需要的依赖 springboot版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-parent</artifactId><version>2.3.2.RELEASE</version><relativePath/></parent> jpa依赖 <!--…...
vue2的双向绑定
vue是一个mvvm框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。 Vue.js 2 中的双向绑定是通过 v-model 指令实现的。v-model 指令可以在表单输入元素上创建…...
Vue3 国际化i18n
国际化i18n方案 1. 什么是i18n2. i18n安装、配置及使用2.1 安装2.2 配置2.3 挂载到实例2.4 组件中使用2.5 语言切换 1. 什么是i18n i18n 是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无…...
算法金 | 使用随机森林获取特征重要性
大侠幸会幸会,我是日更万日 算法金;0 基础跨行转算法,国内外多个算法比赛 Top;放弃 BAT Offer,成功上岸 AI 研究院 Leader; <随机森林及其应用领域> 随机森林是一种强大的机器学习算法,其…...
网络安全的重要性
网络安全的重要性 网络安全是指保护网络系统免受未授权的访问、攻击、破坏或未经授权的数据泄露的能力。随着互联网的普及和数字化进程的加速,网络安全问题日益凸显,成为个人、企业和国家必须面对的重要挑战。 网络安全的威胁 网络安全威胁包括黑客攻…...
Leetcode40 无重复组合之和
题目描述: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 思路分析 这个题是…...
详解MATLAB中处理日期和时间的函数
在MATLAB中处理日期和时间时,可以使用多种函数来进行计时和时间差计算。以下是对一些常用函数的详细解释: 1. tic 和 toc 用途:用来测量一段代码执行的时间。用法:tic; % 启动秒表 % 你的代码 elapsedTime toc; % 停止秒表&…...
Java养老护理助浴陪诊小程序APP源码
💖护理助浴陪诊小程序💖 一、引言:养老新趋势🌱 在快节奏的现代生活中,养老问题逐渐成为了社会关注的焦点。如何为老年人提供便捷、贴心的服务,让他们晚年生活更加安心、舒适,是我们每个人都需…...
go的singleFlight学习
Package singleflight provides a duplicate function call suppression mechanism “golang.org/x/sync/singleflight” 原来底层是 waitGroup,我还以为等待的协程主动让出 cpu 了,没想到 waitGroup.Wait() 阻塞了 doCall 不但返回值是 func 的 val 和…...
高电压技术-冲击高压发生器MATLAB仿真
微❤关注“电气仔推送”获得资料(专享优惠) 冲击电压发生器是产生冲击电压波的装置,用于检验电力设备耐受大气过电压和操作过电压的绝缘性能,冲击电压发生器能产生标准雷电冲击电压波形,雷电冲击电压截波,标准操作冲击…...
【STM32】SysTick系统滴答定时器
1.SysTick简介 CM4内核的处理和CM3一样,内部都包含了一个SysTick定时器,SysTick 是一个24 位的倒计数定时器,当计到0 时 ,将 从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除…...
编码遵循五大设计原则创建出更加健壮、可维护和可扩展的软件系统
一、单一职责原则(SRP) * 定义:一个类应该只有一个引起它变化的原因。 * 解释:意味着一个类应该专注于做一件事情,当需求发生变化时,只影响到一个类。这有助于降低类间的耦合,使得代码更易于理…...
记录一个问题
问题描述 如果一个物料既在A总成零件号下计算为托盘库,在B总成零件号下计算为箱库,则放于箱库。 A中选择排名第21的递补进托盘库。(也需要判断递补的是否在其他总成零件中为箱库,是的话继续递补判断) 解决思路 为了…...
ONLYOFFICE 8.1版本桌面编辑器测评:重塑办公效率的巅峰之作
在数字化办公日益普及的今天,一款高效、便捷且功能强大的桌面编辑器成为了职场人士不可或缺的工具。ONLYOFFICE 8.1版本桌面编辑器凭借其卓越的性能和丰富的功能,成功吸引了众多用户的目光。今天,我们将对ONLYOFFICE 8.1版本桌面编辑器进行全…...
【shell脚本速成】python安装脚本
文章目录 案例需求应用场景解决问题脚本思路案例代码 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊 🌸愿您在此停留的每一刻,都沐…...
抚宁网站建设/推广普通话宣传语100字
已结贴√问题点数:10 回复次数:21关于田忌赛马问题.。。帮忙看下。。谢谢了。。题目描述Here is a famous story in Chinese history."That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play h…...
温岭网站制作/如何软件网站优化公司
目 录 第1章 前 言 1 1.1 研究背景 1 1.2 研究现状 1 1.3 系统开发目标 2 第2章 技术与原理 3 2.1 Thinkphp框架介绍: 3 2.2 B/S体系工作原理: 3 2.3 MySQL数据库 4 2.4 MVVM模式介绍: 5 第3章 需求分析 6 3.1 需求分析 6 3.2 …...
求个网站或者软件/恶意点击竞价是用的什么软件
♚豌豆花下猫,某985高校毕业生, 兼具极客思维与人文情怀 。公众号Python猫, 专注python技术、数据科学和深度学习,力图创造一个有趣又有用的学习分享平台。在《Python拼接字符串的七种方式》这篇文章里,我提到过&#…...
一个ip做几个网站/网站申请流程
背景 首先我是个菜鸡,工资也低的一笔。 刚毕业时候在一家国企上班干 app 开发,干了快两年的时候,跳槽到了一家伪大厂干安全。投了不少简历都没有回音,只有这加伪大厂要我就来了。当时说好了会接触一些底层的东西,然而…...
西安企业网站建设公司/网络营销公司如何建立
尽管您可能并不打算完全替代Zimbra来替代电子邮件和协作服务器(请参阅我的前一篇文章 ),但是在像这样的大型开源应用程序中总会藏有很多东西。 Zimbra AJAX工具包(AjaxTK)就是这样的好东西。 对于Zimbra来说࿰…...
骏驰网站建设/济南网站制作
2020/04/21 每日十句英语口语 He was stunned by the news of her death. 听到她的死讯,他很震惊。I was struck dumb with fear. 我吓得说不出话来。He was paralyzed with terror. 他吓呆了。My jaw dropped when I see how much the meal have cost. 看到那顿饭…...