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; <随机森林及其应用领域> 随机森林是一种强大的机器学习算法,其…...
网络安全的重要性
网络安全的重要性 网络安全是指保护网络系统免受未授权的访问、攻击、破坏或未经授权的数据泄露的能力。随着互联网的普及和数字化进程的加速,网络安全问题日益凸显,成为个人、企业和国家必须面对的重要挑战。 网络安全的威胁 网络安全威胁包括黑客攻…...
从田野录音到语法树生成:NotebookLM语言学研究闭环实战(含濒危方言ASR微调参数集·限24小时下载)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM语言学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具,专为学术工作者设计,其核心能力在于对用户上传的 PDF、TXT 等文本资料进行深度语义理解与上下…...
如何在FF14中实现三倍效率的钓鱼体验?智能计时助手完全解析
如何在FF14中实现三倍效率的钓鱼体验?智能计时助手完全解析 【免费下载链接】Fishers-Intuition 渔人的直感,最终幻想14钓鱼计时器 项目地址: https://gitcode.com/gh_mirrors/fi/Fishers-Intuition 在《最终幻想14》的广阔世界中,钓鱼…...
0403开源:第四卷光刻机整机控制与量检测系统(A级 中期集中攻坚)3. 开源纳米级计量检测设备卡点
开源光刻机整机控制与量检测系统(A级 中期集中攻坚) 3. 开源纳米级计量检测设备卡点(全参数开源硬核壁垒拆解喂饭级溯源破局) 前置开源声明 本节全程无保留开源光刻量检测底层原理、设备架构、纳米级计量阈值、国内外参数对标、核…...
BilibiliDown:一键下载B站音频的跨平台神器
BilibiliDown:一键下载B站音频的跨平台神器 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili…...
基于MCP协议的Claude对话历史管理工具:架构、配置与实战
1. 项目概述:一个为Claude桌面应用量身定制的历史记录管理工具如果你和我一样,是Claude桌面应用的深度用户,那你一定对那个内置的对话历史管理功能颇有微词。它太基础了,基础到几乎只能算是一个“查看器”。想按日期、按项目、按关…...
【信息科学与工程学】【制造工程】【通信工程】第一百零一篇 2nm 200Tbps+核心交换机全尺度参数宇宙构建框架05
围绕芯片、单板、交换网卡等层级,重点扩展“信息处理”中的“内存/存储器”子系统相关参数,并覆盖其他关键方面。 衬底、互连、介质,但光刻胶、清洗液、研磨液、封装胶、键合线、TIM材料、探针卡、载带、保护涂层、清洗溶剂、掺杂剂、气体、抗反射涂层、对准标记、硅化物、…...
让你的电脑静下来:FanControl风扇智能控制完全指南
让你的电脑静下来:FanControl风扇智能控制完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...
16nm FinFET与3D-IC设计验证的技术突破与应用
1. 16nm FinFET与3D-IC设计验证的技术突破2013年9月,ANSYS子公司Apache Design与台积电(TSMC)达成重要合作,将RedHawk和Totem工具集成到TSMC 16nm FinFET参考流程和3D-IC参考流程中。这一合作标志着半导体设计验证技术迈入新阶段&…...
告别本地跑模型:用恒源云+PyCharm专业版搭建你的第一个远程深度学习环境
告别本地跑模型:用恒源云PyCharm专业版搭建你的第一个远程深度学习环境 当你在本地笔记本上跑ResNet-18都卡得无法切换浏览器标签时,就该考虑把计算任务交给云端了。但真正阻碍开发者上云的往往不是技术门槛,而是开发体验的断层——谁都不想为…...
Halcon实战:高效遍历指定文件夹图像文件的两种核心方案
1. 工业视觉项目中的图像读取痛点 在工业视觉检测项目中,我们经常需要处理大量存储在本地文件夹中的图像文件。这些文件可能来自产线相机拍摄的产品照片、X光检测图像或是其他光学设备生成的图片。实际项目中,图像文件的命名往往不规范,格式…...
