STM32——独立看门狗

文章目录

    • 一、看门狗基础介绍
      • (一)看门狗概述:
      • (二)看门狗的作用:
      • (三)看门狗的原理:
      • (四)为什么需要使用看门狗来提高系统的可靠性:(了解)
      • (五)硬件配置
      • (六)看门狗应用
      • (七)想了解高级功能和技巧可以参考以下方式:
    • 二、HAL库独立看门狗学习和时间溢出计算
    • 三、HAL库独立看门狗配置流程

一、看门狗基础介绍

(一)看门狗概述:

看门狗(Watchdog)是一种用于提高系统可靠性的硬件或软件机制。它的作用是监控系统的运行状态,并在系统出现故障或停止响应时采取相应的措施,如复位系统或执行预定义的异常处理程序。

(二)看门狗的作用:

通过使用看门狗,系统能够在出现故障或停止响应时快速检测并采取措施。它可用于监控各种硬件和软件故障,如死锁、无限循环、崩溃等。看门狗是特别有用的,当系统处于无人监视或远程控制的环境中时,可以确保系统自动恢复或采取适当的应对措施。

(三)看门狗的原理:

1.监控系统状态:看门狗定时器会周期性地计数,当系统正常运行时,软件会定期“喂狗”,即重置看门狗计数器,防止计数器溢出。如果系统在规定的时间内未能喂狗,即未能刷新看门狗计数器,说明系统可能出现了故障或停止响应。
2.超时触发复位:看门狗定时器的计数器达到预设的阈值(重装载值)时,会触发看门狗超时事件。这意味着系统在规定的时间内未能喂狗,被认为是异常状态。超时事件可以触发复位电路,导致系统执行复位操作,将系统恢复到初始状态。
3.系统恢复:当看门狗超时事件发生时,系统会执行相应的恢复操作。这可以包括重新初始化系统、重新加载程序或执行特定的异常处理程序,以确保系统能够正常运行。

(四)为什么需要使用看门狗来提高系统的可靠性:(了解)

1.异常恢复:看门狗可以在系统出现异常或故障时触发重启操作。如果系统在运行过程中发生了死锁、崩溃、无限循环或其他异常情况,看门狗能够检测到这些情况并通过重启系统来恢复正常运行。这有助于避免系统持续处于不可用或不稳定状态。
2.软件故障保护:即使在软件出现故障或异常的情况下,看门狗也能够确保系统的可靠性。通过定期喂狗操作,软件可以证明自己仍在正常运行。如果软件由于某种原因无法进行喂狗操作(如死循环或异常跳转),看门狗将检测到这种情况并采取相应的恢复措施。
3.系统稳定性监控:看门狗可以监控系统的运行状态和稳定性。它会定期计时,如果系统在设置的时间间隔内没有进行喂狗操作,说明系统可能出现了故障或停滞。在这种情况下,看门狗将触发重启操作,以确保系统恢复到可靠的状态。
4.预防嵌入式系统停顿:在嵌入式系统中,可能会出现一些无法预料的情况,导致系统停顿或无响应。看门狗可以帮助预防这些停顿情况的发生。通过设置适当的看门狗定时器周期和喂狗操作,可以确保系统在规定时间内持续运行,避免长时间的停顿或无响应。

(五)硬件配置

学习如何配置单片机的时钟源和时钟分频器,以确保看门狗定时器的时钟频率正确,具体查看对应芯片的数据手册或参考手册,我用的是stm32f103的板子,STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是在 30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 40Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。(本段参考正点原子STM32HAL库开发指南)
至于看门狗硬件引脚如何设置需要硬件工程师决定。

(六)看门狗应用

看门狗在实际应用中的用途,如监控系统死锁、处理器失效等
学习如何合理设置看门狗的预分频器和重装载值,以达到适当的超时时间
研究如何在系统中处理看门狗复位,以确保系统能够正确恢复并继续正常运行

(七)想了解高级功能和技巧可以参考以下方式:

1.学习如何在看门狗定时器中断中执行特定的操作
2.探索看门狗模块的其他功能,如窗口模式、硬件喂狗等
3.研究如何在系统中处理看门狗异常,如故障检测和容错机制

二、HAL库独立看门狗学习和时间溢出计算

学习看门狗需要了解以下几个寄存器
1.IWDG_KR
在这里插入图片描述

在键寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位
值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要键寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新加载到计数器中从而避免产生看门狗复位。
IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向
IWDG_KR 寄存器中写入 0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。
2.IWDG_PR 预分频寄存器
该寄存器用来设置看门狗时钟的分频系数,最低为 4,最高位 256,该寄存器是一个 32 位的寄存器,但是我们只用了最低 3 位,其他都是保留位
在这里插入图片描述

3.IWDG_RL重装载寄存器
在这里插入图片描述

4.独立看门狗时间溢出计算

溢出时间Tout=重装载值X看门狗时钟周期
看门狗时钟周期=1/(预分频值X时钟频率)
预分频值=1/(预分频因子)

预分频因子的确定要查看PR寄存器中的后三位,我们用的是100,对应的是64分频因子,带入上式子,如下所示就可以算出来溢出时间了,单位ms
在这里插入图片描述
Ps:有同学问为什么设置500重装载值和64预分频因子呢?
其实是我自己在问啦哈哈哈哈哈,因为我第一次学看门狗。
很简单,就看你要多久的溢出时间,我这个设置大概是1s溢出时间,你想改时间再设置其他数值即可!

三、HAL库独立看门狗配置流程

1.定义看门狗句柄

IWDG_HandleTypeDef IWDG_Handler;

2.看门狗配置初始化
分频系数
重装载值
看门狗初始化

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,默认会开启独立看门狗	
}

3.喂狗函数

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

4.While(1)按键喂狗

if(KEY_Scan(0)==WKUP_PRES) //如果WK_UP按下,喂狗
{
IWDG_Feed(); //喂狗
}
delay_ms(10);

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

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

相关文章

【knife4j-spring-boot】Springboot + knife4j-spring-boot 整合swagger脚手架

swagger-boostrap-ui从1.x版本到如今2.x,同时也更改名字Knife4j 在此记录下 knife4j-spring-boot-starter 的整合。 只需要引入knife4j-spring-boot-starter,无需引入其他的swagger包,knife4j-spring-boot-starter已经包含。 官方版本说明…

unity Terrain 性能问题

在实践过程中unity发生进入场景GPU爆显存的情况,经过调查发现是使用Terrain造成的问题,这个问题在使用一个Terrain的时候并不会发生,但是在使用多个时会发生。 似乎在使用过程中Terrain会直接把Terrain的整个地图加载,造成移动设…

解决:Gitee + PicGo配置图床失败

解决:Gitee PicGo配置图床失败 PicGo安装插件的时候选择:gitee-uploader,不要选择gitee! 在Gitee新建的图床仓库中设置一个images文件夹,用来保存上传的图片,但是要注意在PicGo中的path中要写上路径/img…

怎么用 AI 来智能审核 PDF合同?5步搞定!

大家都知道审合同是一个比较耗费精力的过程,有没有更好的办法来智能审核PDF合同呢,今天就教大家一招,用AI来智能审核PDF合同。 在开始之前呢,我们要找到一款带AI功能的工具,我试用过擎盾智能合同审查、幂律智能等工具,感觉都不太理想,经过一段时间的摸索,我找到了一款比较适合…

低代码开发与IT开发的区别

目录 一、含义不同 二、开发门槛不同 三、两者之间的区别 1、从技术特征来看 2、从目标开发者来看 四、低代码平台使用感受? (1)自定义模块,满足不同的业务需求 (2)工作流引擎,简化复杂流程的管…

深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络(Convolutional Neural Networks,CNN)在鸟类目标识…

ubuntu22.04在线安装redis,可选择版本

安装脚本7.0.5版本 在线安装脚本,默认版本号是7.0.5,可以根据需要选择需要的版本进行下载编译安装 sudo apt-get install gcc -y sudo apt-get install pkg-config -y sudo apt-get install build-essential -y#安装redis rm -rf ./tmp.log systemctl …

dm数据库的spool导出

我们经常使用oracle的spool功能导出csv或者txt文本,达梦数据库也有类似功能,且语法基本类似,现总结导出脚本如下: set pagesize 0 set trimspool on set linesize 500 set lineshow off set feedback off set verify off set ech…

自养号测评补单对亚马逊,美客多,国际站卖家有什么影响

做测评,补单。其本质也是增加真实用户浏览下单,得到平台规则的承认,让它给你更多曝光和排名,从而增加转化率。相信很多卖家都没做过测评,补单。只靠着产品优化,广告和催评等手段来提升店铺,但是…

什么是数据确权?

在数字化时代,数据已经成为一种新型资产,”新的石油“,具有巨大的价值,未来世界经济竞争一定程度上是数字经济的竞争,而非工业的竞争。数据相关法律制度,尚且还不完整,推动数字经济的发展&#…

电机应用开发-直流有刷电机电流环控制实现

目录 直流有刷电机电流环控制实现 硬件设计 直流电机电流环控制-位置式PID实现 编程要点 配置ADC可读取电流值 配置基本定时器6产生定时中断读取当前电路中驱动电机的电流值并执行PID运算 配置定时器1输出PWM控制电机 ADC数据处理 编写位置式PID算法 直流电机电流环控…