STM32学习笔记---独立看门狗

目录

一、什么是独立看门狗

1、什么是看门狗

2、看门狗的原理

3、看门狗的作用

4、看门狗的分类

二、如何配置独立看门狗

1、独立看门狗框图

2、独立看门狗的相关寄存器

2.1 关键字寄存器

2.2 分频寄存器

2.3 重载值寄存器

2.4 状态寄存器

3、程序设计

4、独立看门狗的应用

三、具体使用看门狗

一、什么是独立看门狗

1、什么是看门狗

看门狗,又叫watchdog timer,从本质上来说就是一个12bit的递减计数器。看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。看门狗电路一般会有一个输入和一个输出,其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端。

2、看门狗的原理

看门狗的一个输出到MCU的RST端(复位电路),MCU正常工作的时候,每隔一端时间输入一个信号到喂狗端,给WDT(Watch Dog Timer,看门狗定时器)清零;如果超过规定的时间(事先给看门狗一个约定的时间,即计数上限值)不喂狗(一般在程序跑飞时),WDT定时超时,就会给出一个复位信号到MCU,使MCU复位,从而防止MCU死机。

3、看门狗的作用

程序运行的保障措施。在程序中定期喂狗,在程序卡死的情况下,自动帮我们复位,看门狗就是一个自动复位电路,防止程序长时间卡死。其本质就是一个定时器,定时器溢出,产生复位信号。

4、看门狗的分类

独立看门狗和窗口看门狗

二、如何配置独立看门狗

1、独立看门狗框图

独立看门狗的工作流程:

1.内部低速时钟LSI通过预分频后得到了分频后的时钟信号(橙色箭头

2.该时钟信号驱动递减计数器,每来一个时钟,自减一个数,当自减到0后产生IWDG复位(绿色箭头)

3.正常运行时,为了避免复位,可提前在重装寄存器写一个值,IWDG_RLR与定时器的ARR是一样的,当预先写好值之后,在运行过程中,在关键字寄存器里,写入一个特定的关键字,控制电路进行喂狗,这时重装值就会加载到递减计数器中,重新自减运行了(红色箭头)

2、独立看门狗的相关寄存器

2.1 关键字寄存器

0xAAAA           每次喂狗的写入值(更新重装载)--------狗粮

0x5555            解除寄存器的写保护

0xCCCC         启动计数器

0x5555以外的数值    激活寄存器的写保护

注意:独立看门狗一旦启动就不能关闭

2.2 分频寄存器

就是对内部低速时钟(LSI 32K)进行分频的

32000/s    32分频    1000/s

2.3 重载值寄存器

2.4 状态寄存器

 

3、程序设计

独立看门狗初始化配置函数

{

        /*时钟源配置*/

        RCC控制和状态寄存器:

        //使能内低速振荡器       0位

        //等待内部低速振荡器就绪 1位

        /*解除写保护*/

        //等待PVU清零

        //设置分频

        //等待RVU清零

        //设置重载

        //第一次喂狗,目的是将重载值加载到计数器内

        /*使能看门狗(也算激活写保护)*/

}

4、独立看门狗的应用

场景:工业自动化控制器

要求: 在一个工业自动化控制器中,需要确保周期性任务能够按时完成。在这个场景中,如果周期性任务在规定的时间内没有完成,可能会导致系统的不稳定。

实现: 你可以使用独立看门狗,设置一个固定的超时时间。系统在每个周期内开始计数,如果在超时时间内没有完成,独立看门狗就会触发复位。这确保了系统不会因为周期性任务的失败而进入不稳定状态。

三、具体使用看门狗

独立看门狗初始化函数:

/*
函数名: iwdg_init
函数功能:独立看门狗初始化
返回值:void
形参:u16 ms
函数说明:*/
void iwdg_init(u16 ms)
{/*时钟源配置*///RCC控制和状态寄存器:RCC->CSR |= (1 << 0);//使能内低速振荡器       0位while(!(RCC->CSR & (1 << 1)));//等待内部低速振荡器就绪 1位/*解除写保护*/IWDG->KR  = 0x5555;while(IWDG->SR & (1 << 0));/*设置分频*/IWDG->PR |= (3 << 0);while(IWDG->SR & (1 << 1));/*设置重载*/IWDG->RLR = 1 * ms - 1;IWDG->KR  = 0xAAAA;//喂狗/*使能看门狗(相当于激活写保护)*/IWDG->KR  = 0xCCCC;}

主程序: 

int main(void)
{NVIC_SetPriorityGrouping(5); //设置优先级分组Usart1_init(115200);//串口初始化Key_init();LED_init();Beep_init();iwdg_init(1000);timer7_Interrupt_ms_init(1);printf("重启\r\n");while(1){LED_flash(1);if(Tim7_cnt[9] >= 900){IWDG->KR  = 0xAAAA;//喂狗Tim7_cnt[9] = 0;}}}

总结:在预设的时间内,正常喂狗一切正常运行;在预设时间外,则会触发复位。

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

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

相关文章

零基础入门人工智能,如何利用AI工具提升你的学习效率?

在这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;不仅是技术行业的热词&#xff0c;更是我们日常生活中不可或缺的部分。你是否也想过&#xff0c;如何更有效地学习和利用这些强大的AI工具来提升自己的学习效率&#xff1f;今天&#xff0c;我们将介绍六款…

【WRF工具】QGis插件GIS4WRF:根据嵌套网格生成namelist.wps文件

【WRF工具】QGis插件GIS4WRF:根据嵌套网格生成namelist.wps文件 准备:WRF嵌套网格QGis根据嵌套网格生成namelist.wps文件检查:根据namelist.wps绘制模拟区域ArcGIS Pro中绘制嵌套网络投影变换参考GIS4WRF 是一个免费且开源的 QGIS 插件,旨在帮助研究人员和从业者进行高级研…

【Hive】8-Hive性能优化及Hive3新特性

Hive性能优化及Hive3新特性 Hive表设计优化 Hive查询基本原理 Hive的设计思想是通过元数据解析描述将HDFS上的文件映射成表 基本的查询原理是当用户通过HQL语句对Hive中的表进行复杂数据处理和计算时&#xff0c;默认将其转换为分布式计算 MapReduce程序对HDFS中的数据进行…

玫瑰花HTML源码

HTML源码 <pre id"tiresult" style"font-size: 9px; background-color: #000000; font-weight: bold; padding: 4px 5px; --fs: 9px;"><b style"color:#000000">0010000100000111101110110111100010000100000100001010111111100110…

buuctf[湖南省赛2019]Findme1

解压得5个图片&#xff0c;其中图片1&#xff0c;高度不正常&#xff0c;使用下面脚本破解真实高度和宽度 import os import binascii import structcrcbp open("1.png", "rb").read() for i in range(1024):for j in range(1024):data crcbp[12:16] st…

维修数据屏:重塑热力公司运维管理新格局

在热力公司的运维管理中&#xff0c;高效的报修和维修流程是确保系统稳定运行的关键。随着科技的发展&#xff0c;维修数据屏的出现为热力公司的运维工作带来了重大变革。 一、传统热力运维面临的挑战 过去&#xff0c;热力公司在报修和维修方面存在诸多问题&#xff0c;给运维…

SpringCloud学习:Seata总结与回顾

SpringCloud学习&#xff1a;Seata总结与回顾 文章目录 SpringCloud学习&#xff1a;Seata总结与回顾1. Seata实战&#xff1a;测试2. Seate原理总结和面试题3. Seata总结与回顾4. 易混点 1. Seata实战&#xff1a;测试 测试问题 未启用分布式事务 若不使用分布式事务&#xf…

Greenhills学习总结

学习背景&#xff1a;近期参与xx项目过程中&#xff0c;遇到较多的关于代码集成编译的知识盲区&#xff0c;因此需要进行相关知识的学习和扫盲。 参考资料&#xff1a;GreenHills2017.7编译手册:本手册是GreenHills 2017.7.14版编译器的软件使用手册。该手册详细介绍了GreenHi…

Docker consul注册中心

一、consul 1.1、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。 起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。 直到后来出现了多个节点的分布式架构&#x…

React(五) 受控组件和非受控组件; 获取表单元素的值。高阶组件(重点),Portals; Fragment组件;严格模式StrictMode

文章目录 一、受控组件1. 什么是受控组件2. 收集input框内容3. 收集checkBox的值4. 下拉框select总结 二、非受控组件三、高阶组件1. 高阶组件的概念 (回顾高阶函数)2. 高阶组件应用&#xff1a;注入props(1) 高阶组件给---函数式组件注入props(2) 高阶组件给---类组件注入prop…

前100+大型语言模型(LLMs)面试问题和路线图

介绍 获取前 100 个精选的 LLM 面试问题&#xff0c;了解如何准备生成式 AI 或 LLM 面试准备和大型语言模型 &#xff08;LLM&#xff09; 面试准备的学习路径。 This article explains learning path for large language models (LLMs) interview preparation. You will fin…

陪诊小程序之uniapp(从入门到精通)

1.uniapp如何使用vue3编写页面 <template><view class"content"><navbar name"navbar组件"></navbar><image class"logo" src"/static/logo.png"></image><view class"text-area"&…

C++进阶:AVL树实现

目录 一.AVL的概念 二.AVL的实现 2.1AVL树的结构 2.2AVL树的插入 2.2.1AVL树插入一个值的大概过程 2.2.2平衡因子更新 2.2.3插入节点及更新平衡因子的实现 2.3旋转 2.3.1旋转的原则 2.3.2右单旋 2.3.3右单旋的代码实现 2.3.4左单旋 2.3.5左单旋的代码实现 2.3.6…

vue综合指南(二)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:vue综合指南(二) 目录 21、介绍虚拟DOM 22、vue生命周期的理解 23、vue父组件向子组件传递数据…

STM32_实验5_中断实验

通过外部中断来检测四个按键按下的状态&#xff1a; WK_UP 控制蜂鸣器响和停 KEY0 控制 LED_R 互斥点亮 KEY1 控制 LED_G 互斥点亮 KEY2 控制 LED_B 互斥点亮。 中断的基本概念&#xff1a; 中断请求&#xff08;IRQ&#xff09;&#xff1a; 当发生某个特定事件&#xff08;例…

【问题解决】——当出现0xc000007b和缺少mfc140.dll时,该怎么做才能让软件可以打开

目录 事情起因 问题处理 明确定义 填坑之路 最后我是怎么解决的&#xff08;不想看故事直接到这里&#xff09; 事情起因 最近想要重新安装西门子博途来做西门子的一些算法的时候&#xff0c;发现自己软件装的是V15.1的版本&#xff0c;而买的plc1200固件版本要求至少16以…

(AtCoder Beginner Contest 375)D - ABA

&#xff08;AtCoder Beginner Contest 375&#xff09;D - ABA 题目大意 给定一个只包含大写字母的字符串S&#xff0c;求解其长度为3的回文字序列个数 思路 首先暴力枚举区间计算答案 O ( ∣ S ∣ 2 ) O(|S|^2) O(∣S∣2) 一定是会超时的 我们考虑使用前缀和思想 我们对于…

推荐IDE中实用AI编程插件,目前无限次使用

插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】&#xff0c;这个插件提供智能补全、智能预测、智能问答等能力&#xff0c;节省开发时间 直接在IDE中使用&#xff0c;就不用在网页中来回切换了 感觉还可以&#xff0c;响应速…

【SQL实验】 设计主码、check约束 、外码(SSMS 菜单操作)

设计主码 PK——主码 右键点击所需的表&#xff0c;选择“设计”。 选择需要作为主键的列&#xff0c;右键点击并选择“设为主键”。 保存更改&#xff0c;确保主键设置生效。 如果出现下图&#xff1a; 解决方式&#xff1a; 把√取消掉&#xff0c;修改后&#xff1a; 确定…

告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布

ELK一直是日志领域的主流产品&#xff0c;但是ElasticSearch的成本很高&#xff0c;查询效果随着数据量的增加越来越慢。业界已经有很多公司&#xff0c;比如滴滴、B站、Uber、Cloudflare都已经使用ClickHose作为ElasticSearch的替代品&#xff0c;都取得了不错的效果&#xff…