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

STM32开发(11)----CubeMX配置独立看门狗(IWDG)

CubeMX配置独立看门狗(IWDG)

  • 前言
  • 一、独立看门狗的介绍
  • 二、实验过程
    • 1.STM32CubeMX配置独立看门狗
    • 2.代码实现
    • 3.硬件连接
    • 4.实验结果
  • 总结


前言

本章介绍使用STM32CubeMX对独立看门狗定时器进行配置的方法。门狗本质上是一个定时器,提供了更高的安全性、时间的精确性和使用的灵活性。STM32F1xx提供两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的障,重点掌握超时时间的计算,理解LSI温漂较大的使用场景,以及独立定时器的使用;

一、独立看门狗的介绍

独立看门狗IWDG有一个输出端,可以输出复位信号。该定时器是一个 12 位的递减计数器,当计数器的值减到 0 的时候,就会产生一个复位信号。如果在计数没减到 0 之前,重置计数器的值的话,那么就不会产生复位信号,这个动作我们称为喂狗。看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍然可以工作。

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

独立看门狗框图
在这里插入图片描述
从上图我们可以看到独立看门狗主要由下面几个部分组成:
独立看门狗时钟
独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效,非常独立。LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ,所以独立看门狗的定时时间并不一定非常精确,只适用于对时间精度要求比较低的场合。
计数器时钟
递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,我们可以操作预分频器寄存器IWDG_PR 来设置分频因子,分频因子可以是: [4,8,16,32,64,128,256,256],计数器时钟 CK_CNT=40/ 42^PRV,一个计数器时钟计数器就减一。
计数器
独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗。
重装载寄存器
重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。超时时间 Tout = (4
2^prv) / 40 * rlv (s) , prv 是预分频器寄存器的值, rlv 是重装载寄存器的值。
键寄存器
键寄存器 IWDG_KR 可以说是独立看门狗的一个控制寄存器,主要有三种控制方式,往这个寄存器写入下面三个不同的值有不同的效果。
在这里插入图片描述

二、实验过程

1.STM32CubeMX配置独立看门狗

选择芯片stm32f103c6t6,新建工程

在这里插入图片描述

设置时钟源,最小系统外部晶振8Mhz,作为外部高速HSE时钟源。由于没有外接外部低速晶振,这里低速时钟源选择旁路时钟源。

在这里插入图片描述

配置时钟树,这里使用官方推荐的配置

在这里插入图片描述

在这里插入图片描述
IWDG的时钟为40kHz,此时设置计数器时钟为64分频,递减基础器重载值(down-counter reload value)配置为625,当计数器的值大于窗口值时,如果执行重载操作,则会产生复位。
超出(溢出)时间计算:

                                               Tout=((4×2^PRER) ×RLR)/LSI时钟频率=(64 * 625)/40 000 =  1s

在这里插入图片描述

在这里插入图片描述

Code Generator中设置只拷贝使用到的库,分离.c和.h文件

在这里插入图片描述

设置好项目名称和路径,点击GENERATE CODE即可,生成后使用keil5 IDE打开。

在这里插入图片描述

2.代码实现

这里通过打印来查看iwdg的情况,注意喂狗时间不要太接近临界值,因为rc的温漂很大,所以如果很接近临界值可能导致复位

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();MX_IWDG_Init();/* USER CODE BEGIN 2 */printf("IWDG start\r\n");/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */printf("\n\r Refreshes the IWDG !!!\n\r");/* Refresh IWDG: reload counter */HAL_IWDG_Refresh(&hiwdg);HAL_Delay(800);}/* USER CODE END 3 */
}

3.硬件连接

烧录器ST-LINK V2和最小系统板的连接如图所示: 四线连接 SWDIO,GND,SWCLK,和3.3V电源

在这里插入图片描述

4.实验结果

每经过800ms喂一次狗,喂狗成功,程序不会重启
在这里插入图片描述
为了体现喂狗失败的复位现象,这里修改下代码

  while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */printf("\n\r Refreshes the IWDG !!!\n\r");/* Refresh IWDG: reload counter */HAL_IWDG_Refresh(&hiwdg);HAL_Delay(1100);}

可以看到喂狗失败,程序不停的重启
在这里插入图片描述

总结

本章介绍了STM32F103系列设备中独立看门狗,并通过实验验证了前面所讲的理论,这里要注意,LSI的温漂比较大,使用时不可用于精准定时的场景。

相关文章:

STM32开发(11)----CubeMX配置独立看门狗(IWDG)

CubeMX配置独立看门狗(IWDG)前言一、独立看门狗的介绍二、实验过程1.STM32CubeMX配置独立看门狗2.代码实现3.硬件连接4.实验结果总结前言 本章介绍使用STM32CubeMX对独立看门狗定时器进行配置的方法。门狗本质上是一个定时器,提供了更高的安…...

医疗方案 | 星辰天合入选“2022智慧新医信优秀解决方案”

近日,由 HC3i数字医疗网主办的《数字化转型驱动下的医院高质量发展论坛》暨 2022 智慧新医信优秀解决方案发布仪式在线上召开。XSKY星辰天合的“智慧医疗软件定义数据基础设施”解决方案成功入选 2022 智慧新医信优秀解决方案,。此次论坛由 HC3i 数字医疗…...

【系统服务实战】tomcat服务的安装实战

未来要更新的专栏(此表格后面会继续完善) 专栏系列学习路线完成情况云原生系列linux基本功系列-基础命令汇总已更新51个命令云原生系列linux基本功系列-系统服务实战正在更新文章目录前言一. tomcat的概述1.1 什么是tomcat1.2 tomcat的官网二. tomcat单…...

【图文详解】Unity存储游戏数据的几种方法

Unity3D存储游戏数据的方式1 PlayerPrefs: Unity自带的一种简单的键值存储系统2 ScriptableObject: Unity中最灵活的数据管理工具2.1 如何手动创建和修改数据文件2.2 ScriptableObject优缺点总结3 JSON: 轻量级的数据交换格式3.1 序列化与反序列化3.2 用JsonUtility对对象进行序…...

SESAM 安装教程

SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、HydroD 和 DeepC 等模块为核心,主要用于海工结构的强度评估、…...

语言文件操作

🌱博客主页:大寄一场. 🌱系列专栏:C语言学习笔记 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 C语言中的文件打开和关闭 文件指针 文件的打开和关闭 fclose 文件的顺序读写 fseek ftell …...

Java面试题--熔断和降级的区别

熔断和降级都是系统自我保护的一种机制,但二者又有所不同,它们的区别主要体现在以下几点: 概念不同 触发条件不同 归属关系不同 1.概念不同 1.1熔断概念 “熔断”一词早期来自股票市场。熔断(Circuit Breaker)也…...

阅读笔记5——深度可分离卷积

一、标准卷积 标准卷积在卷积时,同时考虑了特征图的区域和通道信息。 标准卷积的过程如图1-1所示,假设输入特征图的channel3,则每个卷积核的channel都为3,每个卷积核的3个channel对应提取输入特征图的3个channel的特征&#xff08…...

Microsoft Dynamics 365:导入License到服务层,通过Business Central Administration Shell

本文主要是Microsoft Dynamics 365的License导入的图解干货,不多赘述,直接上图:第一步:准备好的License文件放在你喜欢的目录下第二步:到开始程序里找到并打开 Business Central Administration Shell3.第三步&#xf…...

centos6.10安装FastDfs出错的问题

在centos6.10虚拟机安装dfs文件服务器时,安装报错,报错为: gcc: error trying to exec cc1’: execvp: 没有那个文件或目录 1.ping www.baidu.con 排查网络是否通 2.yum update 排查yum源是否可用 3.yum源地址不可用时,修改yu…...

基础组件之内存池

内存池技术 操作系统在运行进程的过程中,会产生内存碎片,降低了内存的使用率。内存池技术就是为了解决/减少内存碎片的一种方法,内部底层的具体实现根据不同业务场景使用不要的方式,以下是一种好理解的方式,供大家一起…...

前端面试题--了解并简单介绍一下typescript

前端面试题–了解并简单介绍一下typescript TypeScript是JavaScript的超集,具有可选的类型并可以编译为纯JavaScript。 从技术上讲TypeScript就是具有静态类型的 JavaScript 。 向JavaScript添加静态类型的原因是什么?我想原因至少有三个: …...

【pytorch】ModuleList 与 ModuleDict

ModuleList 与 ModuleDict1、ModuleList2、ModuleDict3、总结1、ModuleList 1)ModuleList 接收一个子模块的列表作为输入,然后也可以类似 List 那样进行 append 和 extend 操作: net nn.ModuleList([nn.Linear(784, 256), nn.ReLU()]) net.append(nn.…...

Hive窗口函数语法规则、窗口聚合函数、窗口表达式、窗口排序函数 - ROW NUMBER 、口排序函数 - NTILE、窗口分析函数

Hive窗口函数 文章目录Hive窗口函数语法规则窗口聚合函数窗口表达式窗口排序函数 - ROW NUMBER窗口排序函数 - NTILE窗口分析函数窗口函数也叫开窗函数、OLAP函数其最大特点:输入值是从SELECT语句的结果集中的一行或多行的“窗口”中获取的。如果函数具有OVER子句&a…...

Go设计模式之函数选项模式

目录引入函数选项模式(functional options pattern)可选参数默认值接口类型版本引入 假设现在需要定义一个包含多个配置项的结构体,具体定义如下: // DoSomethingOption 定义配置项 type DoSomethingOption struct {// a 配置aa…...

ClickHouse 数据类型、函数大小写敏感性

这里写自定义目录标题SELECT *FROM system.data_type_families注意:case_insensitive0 表示大小写敏感。 ClickHouse 的 String 类型、Int 类型、Float 类型、Decimal类型等都是大小写敏感的(case_sensitive0)。关于ClickHouse大小写敏感&am…...

nodejs基于vue 网上商城购物系统

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…...

掌握MySQL分库分表(一)数据库性能优化思路、分库分表优缺点

文章目录MySQL数据库性能优化思路【面试题】不分库分表软优化硬优化分库分表结论分库分表能解决的问题解决数据库本身瓶颈连接数解决系统本身IO、CPU瓶颈分库分表带来的问题问题⼀ 跨节点数据库Join关联查询问题二 分库操作带来的分布式事务问题问题三 执行的SQL排序、翻页、函…...

何为小亚细亚?

一、小亚细亚安纳托利亚(Anatolia),又名小亚细亚或西亚美尼亚,是亚洲西南部的一个半岛,隶属于土耳其。安纳托利亚半岛,北临黑海,西临爱琴海,南濒地中海,东接亚美尼亚高原…...

【mircopython】ESP32配置与烧录版本

下载ESP32的Micropython固件 官方连接https://www.micropython.org/download/esp32/ 看了下描述,上面的是IDF4.x系列编译,下面是IDF3.x系列编译,我们默认选新的 下载安装CP2102驱动 CP210x USB to UART Bridge VCP Drivers - Silicon Labs…...

终极指南:At.js如何让你的应用拥有GitHub级别的智能补全功能

终极指南:At.js如何让你的应用拥有GitHub级别的智能补全功能 【免费下载链接】At.js Add Github like mentions autocomplete to your application. 项目地址: https://gitcode.com/gh_mirrors/at/At.js At.js是一款强大的智能补全库,能够为你的W…...

罕见模式检测新突破:docta的rare_score算法原理与实现

罕见模式检测新突破:docta的rare_score算法原理与实现 【免费下载链接】docta A Doctor for your data 项目地址: https://gitcode.com/gh_mirrors/do/docta 在数据科学领域,识别和处理罕见模式一直是一项极具挑战性的任务。docta作为一款专注于数…...

Windows XP vs 98:XP.css双主题深度对比与选择指南

Windows XP vs 98:XP.css双主题深度对比与选择指南 【免费下载链接】XP.css A CSS framework for building faithful recreations of operating system GUIs. 项目地址: https://gitcode.com/gh_mirrors/xp/XP.css XP.css是一款强大的CSS框架,专为…...

Linux dd命令的深度解析与应用实践

dd 命令概述命令起源与定位dd 命令最早出现在 UNIX 操作系统中,后被移植到 Linux 平台。它不同于普通的文件复制命令(如 cp),dd 以底层块设备的方式操作数据,可以精确控制数据流的每一个细节。这种特性使其成为&#x…...

北京做网站SEO优化有什么技巧_北京做网站关键词优化需要多长时间

北京做网站SEO优化有什么技巧 在北京这样一个竞争激烈的市场,做网站SEO优化显得尤为重要。SEO(Search Engine Optimization,搜索引擎优化)是提升网站在搜索引擎结果中排名的关键手段,而北京的市场竞争尤其激烈&#x…...

车灯设计师必看:CATIA中FreeStyle模块的10个高效技巧

车灯设计师必看:CATIA中FreeStyle模块的10个高效技巧 在汽车照明系统的设计中,曲面造型的精度与美感直接决定了最终产品的市场竞争力。作为行业标准工具,CATIA的FreeStyle模块为车灯设计师提供了强大的自由曲面创建能力,但真正掌握…...

别光调包了!在EduCoder上通关‘卷积神经网络实现’后,我搞懂了im2col加速的奥秘

从EduCoder实战到工业级优化:im2col如何让卷积计算快10倍 在EduCoder平台完成"卷积神经网络实现"实验时,很多同学会疑惑:为什么提供的代码模板里要用im2col这个看似复杂的函数?直接写四重循环实现卷积不是更直观吗&…...

从噪声数据中提取系统矩阵(对应论文式3)

控制顶刊IEEE TAC热点论文复现,前V章案例复现,内容包括数据驱动状态反馈控制和LQR控制,可应用于具有噪声的数据和非线性系统,附参考论文及详细代码注释对应到文中公式,易于掌握理解,需要代码最近在复现TAC上…...

C语言整数字节拆解:联合体与移位操作详解

1. 理解题目:整数字节拆解的核心需求 在嵌入式开发和底层系统编程中,处理多字节数据是家常便饭。就拿这个面试题来说,我们需要从32位无符号整数0x12345678中提取出它的四个独立字节。这看似简单的需求背后,其实涉及到计算机系统中…...

ESP32/ESP8266轻量级二进制RPC库设计与实践

1. 项目概述esp_rpc是一个专为 ESP8266 和 ESP32 平台深度优化的轻量级远程过程调用(Remote Procedure Call, RPC)库。其设计哲学直指嵌入式资源受限场景的核心矛盾:在极小内存占用(ROM/RAM 双敏感)与可靠跨设备交互之…...