当前位置: 首页 > news >正文

STM32复习笔记(四):看门狗

目录

(一)简介

(二)IWDG

IWDG的CUBEMX工程配置

IWDG相关函数(非常少,所以直接贴上来):

(三)WWDG 


(一)简介

看门狗分为独立看门狗(IWDG)和窗口看门狗(WWDG)

(二)IWDG

独立看门狗本质是一种定时器,其作用是监视系统的运行,当系统发生错误(如程序卡死)时,能自动让系统复位;观察cubemx中的时钟树可以发现,IWDG是由LSI提供32KHz的时钟,而IWDG内部可以对LSI时钟进行分频,预分频系数从4~256(须为2的次幂);并且系统复位时,IWDG的12位递减计数器初值为4095,在启动IWDG后,计数器递减计数,当计数值为0时,系统复位;所以如果程序正常运行的话,必须在规定时间里刷新IWDG内递减计数器的值(这就是大家说的“喂狗”),以防止系统复位;另外,根据预分频系数可以算出IWDG的最长超时,如下表所示;计算方法为:T = 1 / (32KHz / 预分频系数)* 4096(注意K表示10e3,k才是2e10);

重载值为4095时IWDG的超时
预分频系数超时/ms
/4512
/81024
/162048
/324096
/648192
/12816384
/25632768

IWDG使用方法非常简单,只需要在计数值减为0之前,按时喂狗即可,否则就会重启系统(常称为“狗叫”);

IWDG的CUBEMX工程配置

在cubemx中,只需要开启IWDG,并配置预分频系数和递减计数值即可:

IWDG相关函数(非常少,所以直接贴上来):

1、初始化:HAL_StatusTypeDef    HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);初始化之后自动启动;

2、喂狗:HAL_StatusTypeDef    HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);

3、宏:__HAL_IWDG_START(__HANDLE__) ;启动iwdg,启动后不可关闭;

4、宏:__HAL_IWDG_RELOAD_COUNTER(__HANDLE__);重置计数值,也就是喂狗;

5、宏:IWDG_ENABLE_WRITE_ACCESS(__HANDLE__);使预分频reg和重载reg可写入;

6、宏:IWDG_DISABLE_WRITE_ACCESS(__HANDLE__);使预分频reg和重载reg不可写入;

IWDG使用方法非常简单,只需要在计数值减为0之前,按时喂狗即可,否则就会重启系统(常称为“狗叫”);


(三)WWDG 

窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。也就是要求某段程序在限定的时间内执行完毕,否则复位系统,防止程序跑飞。

IWDG和WWDG的区别可以参考这个大佬的这篇文章,讲得非常详细了。

完~


以上均为个人学习心得,如有错误,请不吝赐教~

THE END

http://www.lryc.cn/news/181939.html

相关文章:

  • 【C++进阶(七)】仿函数深度剖析模板进阶讲解
  • 基于SSM的电动车上牌管理系统(有报告)。Javaee项目。
  • mstsc无法保存RDP凭据, 100%生效
  • OpenGLES:绘制一个混色旋转的3D球体
  • Spring AOP 基于注解源码整理
  • C语言 —— 函数栈帧的创建和销毁
  • Appleid苹果账号自动解锁改密(自动解锁二验改密码)
  • Conflicting peer dependency: eslint@8.50.0
  • Vue3 defineProps使用
  • 机器学习7:逻辑回归
  • 生活小记-纸张尺寸
  • 【MATLAB源码-第41期】基于压缩感知算法的OFDM系统信道估计和LS算法对比仿真。
  • 优思学院|六西格玛将烹饪和美味提升至极致
  • git stash
  • Flink Data Source
  • 怒刷LeetCode的第23天(Java版)
  • Golang 中的调试技巧
  • linux 监控内存利用率
  • 43 验证二叉搜索树
  • 深度学习笔记之微积分及绘图
  • java Spring Boot按日期 限制大小分文件记录日志
  • CSS 语法
  • Vue3+TS+ECharts5实现中国地图数据信息显示
  • PowerShell 内网不能直接安装SqlServer模块的处理办法
  • Git使用【下】
  • 自然语言处理的分类
  • Flutter笔记:手写并发布一个人机滑动验证码插件
  • RabbitMQ安装与简单使用
  • 不做静态化,当部署到服务器上的项目刷新出现404【已解决】
  • SpringBoot结合Redisson实现分布式锁