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

【STM32】看门狗

看门狗,还没有别的地方用上,暂时还不清楚在实际应用中最多的场景是什么,我感觉是用来强制重启系统。

大部分图片来源:正点原子HAL库教程

目录

1    应用场景

1.1    解决方法——IWDG

1.2    解决方法——WWDG

2    IWDG

2.1    特点

2.2    原理

2.3    看门狗溢出时间的计算

2.4    主要用到的函数

2.5    相关的HAL库文件(可以去这里找用到的函数和宏定义)

3    WWDG

3.1    特点

3.2    原理

3.3    窗口期

3.4    超时时间计算

3.5    配置方法 

3.6    相关的HAL库文件(可以去这里找用到的函数和宏定义)


1    应用场景

嵌入式运行时有可能因为电磁干扰、自身软硬件异常等原因导致程序错误。

1.1    解决方法——IWDG

检测外界电磁干扰,或硬件导致的程序错误。

1.2    解决方法——WWDG

面向软件异常导致的程序错误。


2    IWDG

2.1    特点

  • 使用独立RC振荡器,不与主频率公用
  • 由VDD直接供电
  • 可在待机和停止模式下运行,即只要芯片工作,它就能工作
  • 只要在计数器到0前重装载计数器的值(喂狗),就不会产生复位
  •  适用于需要高稳定性、且对时间精度要求较低的场合(因为RC振荡器的时钟频率不是很稳定)
  • 它是异常处理的最后手段,不能依赖它,只能作为保险的存在

2.2    原理

12位的递减计数器,在计数减到0后,产生系统复位。

时钟源:LSI

2.3    看门狗溢出时间的计算

重要:

一般该公式用于算重装载值,为了达到较为准确的喂狗规定时间规定,需要准确的重装载值,因此需要进行计算。

2.4    主要用到的函数

2.5    相关的HAL库文件(可以去这里找用到的函数和宏定义)

stm32f1xx_hal_iwdg.c


3    WWDG

3.1    特点

  • 能产生系统复位信号以及提前唤醒中断;
  • 当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0)
  • 计数器的值大于W[6:0]值时喂狗会复位
  • 提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生
  • 在窗口期内重装载计数器的值,可防止复位
  • 用于监测单片机程序运行时效是否精准,主要检测软件异常,需要精准检测程序运行时间的场合
  • 它是异常处理的最后手段,不能依赖它,只能作为保险的存在

3.2    原理

6位的递减计数器

时钟源:PCLK

3.3    窗口期

W[6:0]≥窗口>0x3F

3.4    超时时间计算

3.5    配置方法 

3.6    相关的HAL库文件(可以去这里找用到的函数和宏定义)

stm32f1xx_hal_wwdg.c


http://www.mrgr.cn/news/8827.html

相关文章:

  • 超分CAMixerSR 使用笔记
  • OCC笔记:Windows下OCC的编译
  • HTML标签入门篇(1)——标题标签、段落标签、换行标签、水平线标签、图片标签、文本标签
  • HTML 基本语法特性与 title 标签介绍
  • 50道深度NLP和人工智能领域面试题+答案
  • MySQL 系统学习系列 - MySQL 概述与 DDL 语句的使用《MySQL系列篇-01》
  • 私有仓库tomcat镜像构建
  • <数据集>斯坦福狗狗识别数据集<目标检测>
  • 算法(滑动窗口问题)
  • 【diffusers 下载】access token 使用方法总结
  • 大数据-94 Spark 集群 SQL DataFrame DataSet RDD 创建与相互转换 SparkSQL
  • 【前端面试】操作系统
  • easyexcel字典通用转化器
  • RM双轴云台控制
  • 计算机毕业设计 毕业季旅游一站式定制服务平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 普元EOS-微前端的base基座介绍
  • Spring笔记的最后补充 (Spring的基本内容接触完毕)
  • java注解(Annotation)编程
  • 学习文件IO,让你从操作系统内核的角度去理解输入和输出(Java实践篇)
  • Python观察者模式:构建松耦合的通信机制