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

【STM32开发之寄存器版】(四)-独立看门狗IWDG

一 、前言

独立看门狗简介:

STM32F103ZET6内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。

独立看门狗主要性能:

  • 自由运行的递减计数器
  • 时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
  • 看门狗被激活后,则在计数器计数至0x000时产生复位

独立看门狗适用场合:

IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

本次DEMO的目标:

使用STM32F103ZET6,通过按键KEY_UP来喂狗,然后通过DS0提示复位状态。

二、时钟树解析

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。在LSI振荡器稳定后,时钟供应给IWDG。IWDG的时钟树如下所示:

这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是在 30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 40Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。

三、寄存器介绍

与独立看门狗相关的寄存器如下所示:

寄存器功能
IWDG_KR键寄存器
IWDG_PR预分频寄存器
IWDG_RLR重装载寄存器
IWDG_SR状态寄存器

下面将对这些寄存器进行一一介绍。

3.1 IWDG_KR键寄存器

《STM32中文参考手册》对IWDG_KR寄存器的描述如下:

对IWDG_KR键寄存器的用法如下: 

  1. 解锁IWDG_PR和IWDG_RLR:写入0X5555;
  2. 启动看门狗工作:写入0XCCCC;
  3. 定时喂狗:软件必须以一定的时间间隔写入0XAAAA,当计数器为0时,看门狗会复位。

3.2 IWDG_PR预分频寄存器

《STM32中文参考手册》对IWDG_PR寄存器的描述如下:

我们仅需要关注位2:0,通过改变这3位,可以设置看门狗时钟的分频系数,最低为4.最高为256。值得注意的是,只有在IWDG_SR寄存器的PVU位为0时,才能改变预分频因子。分频系数对超时时间的设置如下所示:

3.3 IWDG_RLR重装载寄存器

《STM32中文参考手册》对IWDG_RLR寄存器的描述如下:

当IWDG_KR寄存器写入0XAAAA时,重装载值寄存器的RL[11:0]中的值会被送到计数器中,然后计数器从这个值开始递减计数,值得注意的是,只有当IWDG_SR寄存器中的RVU位为0时,才能对此寄存器进行修改。

3.4 IWDG_SR状态寄存器

《STM32中文参考手册》对IWDG_SR寄存器的描述如下:

RVU位对IWDG_RLR寄存器的影响详见3.3节;

PVU位对IWDG_PR寄存器的影响详见3.2节;

四、程序设计

对IWDG程序的设计,主要分为看门狗初始化函数、喂狗函数以及轮询主函数。

4.1 看门狗初始化函数

看门狗初始化函数位于HARDWARE/wdg.c/IWDG_Init()。主要完成以下任务:

  1. 使用IWDG_KR寄存器对PR和RLR寄存器进行解锁。
  2. 使用IWDG_PR寄存器设置分频系数。
  3. 使用IWDG_RLR寄存器设置重装载值。
  4. 使用IWDG_KR寄存器写入0XAAAA,第一次喂狗。
  5. 使用IWDG_KR寄存器写入0XCCCC,使能看门狗。

具体代码如下所示:

//初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms).
void IWDG_Init(u8 prer,u16 rlr) 
{IWDG->KR=0X5555;//使能对IWDG->PR和IWDG->RLR的写while((IWDG->SR&0X1)==1); //如果SR寄存器的PVU位为1,则循环等待;IWDG->PR=prer;  //设置分频系数while((IWDG->SR&0X2)==2); //如果SR寄存器的RVU位为1,则循环等待;IWDG->RLR=rlr;  //从加载寄存器 IWDG->RLR  IWDG->KR=0XAAAA;//reload											   IWDG->KR=0XCCCC;//使能看门狗	
}

4.2 喂狗函数

喂狗函数位于HARDWARE/wdg.c/IWDG_Feed()。主要是实现IWDG->KR重新写入0XAAAA,将IWDG_RLR寄存器中的值重装载。具体代码如下:

//喂独立看门狗
void IWDG_Feed(void)
{IWDG->KR=0XAAAA;//reload											   
}

4.3 轮询主函数

轮询主函数位于USER/test.c/main()。主要是轮询检测KEY_UP按键是否按下,如果按下则不复位,不按下超时就复位,复位时DS0会一亮一灭。

#include "sys.h"
#include "delay.h"
#include "usart.h" 
#include "led.h" 
#include "key.h"
#include "wdg.h" 	  int main(void)
{					   Stm32_Clock_Init(9);	//系统时钟设置uart_init(72,115200); 	//串口初始化为115200delay_init(72);	   	 	//延时初始化 LED_Init();		  		//初始化与LED连接的硬件接口  KEY_Init();         	//初始化与按键连接的硬件接口delay_ms(500);			//延时500ms,让人可以看到DS0灭的状态IWDG_Init(4,625);    	//与分频数为64,重载值为625,溢出时间为1s	   LED0=0;				 	//点亮DS0while(1){if(KEY_Scan(0)==WKUP_PRES)//如果WK_UP按下,则喂狗{IWDG_Feed();}delay_ms(10);};		 
}

五、上机实验

将程序下载入芯片,不按KEY_UP,则看门狗会超时复位,DS0会先熄灭在亮,如下图所示:

不断按下KEY_UP按键,定期喂狗,DS0就不会熄灭而常亮,如下所示:

至此完成本次DEMO!

相关文章:

【STM32开发之寄存器版】(四)-独立看门狗IWDG

一 、前言 独立看门狗简介: STM32F103ZET6内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。 独立看门狗主要性能: 自由运行的递减计数器时钟…...

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM

【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM 一,文档简介二, 功能实现2.1 软硬件平台2.2 软件控制流程2.3 资源分配概览2.4 EB 配置2.4.1 Dio module2.4.2 Icu module2.4.4 Mcu module2.4.5 Platform module2.4.6 Port module2.4.7 Pwm module 2.5 …...

华为OD机试真题---绘图机器(计算面积)

题目描述 绘图机器的绘图笔初始位置在原点(0,0),机器启动后按照以下规则绘制直线: 尝试沿着横线坐标正向绘制直线直到给定的终点E。期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。 给…...

HarmonyOs 查看官方文档使用弹窗

1. 学会查看官方文档 HarmonyOS跟上网上的视频学习一段时间后,基本也就入门了,但是有一些操作网上没有找到合适教学的视频,这时,大家就需要养成参考官方文档的习惯了,因为官方的开发文档是我们学习深度任何一门语言或…...

uniapp+Android智慧居家养老服务平台 0fjae微信小程序

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 老年人 登…...

在一台电脑上实现网页与exe程序使用udp通信

要在同一台电脑上实现网页(前端)与 EXE 程序(后端)通过 UDP 通信,可以使用以下步骤。前端可以使用 JavaScript 通过 WebSocket 与自定义服务器进行通信,该服务器通过 UDP 发送和接收数据,再与 E…...

基于Java的GeoTools对Shapefile文件属性信息深度解析

目录 前言 一、Shapefile的属性列表信息 1、属性表格信息 2、属性表格包含的要素 二、GeoTools对属性表格的解析 1、常规解析方法 2、基于dbf文件的属性信息读取 三、总结 前言 ESRI Shapefile(shp),或简称shapefile,是美…...

付费计量系统实体和接口(1)

13.System entities and interfaces 系统实体和接口 See also Clause 4 for a discussion on general concepts and Clause 5 for generic entity model. 参见条目 4 讨论总体概念、条目 5 通用实体模型。 An entity specification should specify the embodied functions and …...

网易博客旧文----bacnet学习系列之四----VTS的初步使用

bacnet学习系列之四----VTS的初步使用 2014-02-07 13:32:28| 分类: BACnet | 标签: |举报 |字号大中小 订阅 这是一个测试用 的工具,而且是开放源码的,下载地址为:VTS下载官网 也可以从我的网盘下载 VTS下载 我用的是…...

SpringIoC容器的初识

一、SpringIoC容器的介绍 Spring IoC 容器,负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这…...

队列的实现与讲解

一.概念与结构 1.概念 只允许在⼀端进行插⼊数据操作,在另⼀端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) ​ 入队列:进⾏插⼊操作的⼀端称为队尾 ​ 出队列:进⾏删除操作的⼀端称为队头 注意&…...

hbuilderx+uniapp+Android健身房管理系统 微信小程序z488g

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户功能…...

自动驾驶-参考线生成

为什么要进行参考线生成? apollo在routing模块,已经得到的全局路径,但是其不能直接作为局部路径规划的参考线,这是因为: routing给出的全局路径过长;routing是基于高精地图给出的路径,高精地图…...

厂商资源分享网站

新华三(H3C)是一家中国知名的网络设备供应商,提供网络设备、网络解决方案和云计算服务。公司成立于2003年,是华为公司和惠普公司合资的企业,总部位于中国深圳。 华为(Huawei)是一家全球知名的电…...

【ONE·Web || HTML】

总言 主要内容:HTML基本知识入门,主要介绍了常见的一些标签使用,以及简单案例演示。       文章目录 总言0、前置说明1、认识HTML1.1、是什么1.2、初识 HTML 标签、HTML 文件基本结构1.2.1、相关说明1.2.2、vscode如何快速生成代码 2、HT…...

MongoDB的安装与增删改查基本操作

MongoDB是一种非关系型数据库,是NoSQL语言,但是又是最接近关系型数据库的。内部存储不是表结构,但是可以对数据进行表结构的操作。 一、安装 在官网:Download MongoDB Community Server | MongoDB下载系统对应的版本进行安装即可 二、编辑器 在安装MongoDB后会自带一个编…...

Python水循环标准化对比算法实现

🎯要点 算法区分不同水循环数据类型:地下水、河水、降水、气温和其他,并使用相应标准化降水指数、标准化地下水指数、标准化河流水位指数和标准化降水蒸散指数。绘制和计算特定的时间序列比较统计学相关性。使用相关矩阵可视化集水区和显示空…...

【TypeScript】知识点梳理(一)

#国庆快乐!来点干货~ # #项目中团队总结生产问题,40%是类型相关问题,可见TS的重要性与向好趋势# TS是JS的超集 类型 Number、String、Boolean 首字母大小写,类型有区别,譬如: string是基元(原始…...

DMA方式在执行中断处理程序时不中断现行程序吗

DMA方式在执行中断处理程序时会中断现行程序,但DMA数据传输过程本身不中断现行程序。以下是对DMA方式及其中断处理程序的详细解释: DMA方式的基本特点 DMA(Direct Memory Access,直接存储器存取)方式是一种由硬件直接…...

Redis:string类型

Redis:string类型 string命令设置与读取SETGETMSETMGET 数字操作INCRINCRBYDECRDECRBYINCRBYFLOAT 字符串操作APPENDSTRLENGETRANGESETRANGE 内部编码intembstrraw 在Redis中,字符串string存储的是二进制,以byte为单位,输入的二进…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...