WDG看门狗

一、WDG简介

1、WDG(Watchdog)看门狗

(1)看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序避免程序陷入长时间的罢工状态保证系统的可靠性和安全性

(2)看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路自动产生复位信号

(3)STM32内置两个看门狗     

                独立看门狗IWDG):独立工作对时间精度要求较低(开门狗的时钟是专门用的LSI,不要超过喂狗的最晚界限就行)     

                窗口看门狗WWDG):要求看门狗在精确计时窗口起作用(喂狗的时间有个最晚界限,和最早的界限,必须在这个界限的窗口内喂狗,使用APB1时钟)

2、IWDG框图

3、IWDG键寄存器

(1)键寄存器本质上是控制寄存器用于控制硬件电路的工作

(2)在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率

4、IWDG超时时间

超时时间:T_{IWDG}= T_{LSI} × PR预分频系数 × (RL + 1)

其中:T_{LSI} = 1 / F_{LSI}(输入时钟40kHz)

5、WWDG框图

6、WWDG工作特性

(1)递减计数器T[6:0]的值小于0x40时,WWDG产生复位

(2)递减计数器T[6:0]窗口W[6:0]外被重新装载时,WWDG产生复位

(3)递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器避免WWDG复位

(4)定期写入WWDG_CR寄存器(喂狗)避免WWDG复位

7、WWDG超时时间

超时时间(喂狗最晚时间):     

        T_{WWDG} = T_{PCLK1} × 4096 × WDGTB预分频系数 × (T[5:0] + 1)

窗口时间(喂狗最早时间):     

        T_{WIN} = T_{PCLK1} × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0])

其中:T_{PCLK1} = 1 / F_{PCLK1}

8、IWDG和WWDG对比

二、独立看门狗

1、按照以下接线方式连接,并将STLINK插到电脑上

2、IWGD库函数功能

3、RCC库函数相关功能

4、mian.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "button.h"


int main(void)
{
	OLED_Init();
	Button_Init();
	
	OLED_ShowString(1,1,"IWDG TEST");
	
	if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) ==SET)//查看独立看门狗复位的标志位
	{
		OLED_ShowString(2,1,"IWDGRST");
		Delay_ms(500);
		OLED_ShowString(2,1,"       ");
		Delay_ms(100);
		
		RCC_ClearFlag();//清除标志位因为这个标志位不会自动清0
	}
	else
	{
		OLED_ShowString(3,1,"RST");
		Delay_ms(500);
		OLED_ShowString(3,1,"   ");
		Delay_ms(100);
	}
	
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//解除写保护
	IWDG_SetPrescaler(IWDG_Prescaler_16);//配置预分频 超时时间为1000ms
	IWDG_SetReload(2499);//配置重装值,0~4096之间
	IWDG_ReloadCounter();//喂狗,CNT的值为2499
	IWDG_Enable();//启动看门狗
	
	while(1)
	{
		Button_GetNum();
		
		IWDG_ReloadCounter();//喂狗,CNT的值为2499
		
		OLED_ShowString(4,1,"FEED");
		Delay_ms(200);//985不复位
		OLED_ShowString(4,1,"    ");
		Delay_ms(600);//985不复位
	}
}

5、实现效果

 

三、窗口看门狗

1、WWGD库函数功能

2、mian.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "button.h"


int main(void)
{
	OLED_Init();
	Button_Init();
	
	OLED_ShowString(1,1,"WWDG TEST");
	
	if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST) ==SET)//查看窗口看门狗复位的标志位
	{
		OLED_ShowString(2,1,"WWDGRST");
		Delay_ms(500);
		OLED_ShowString(2,1,"       ");
		Delay_ms(100);
		
		RCC_ClearFlag();//清除标志位因为这个标志位不会自动清0
	}
	else
	{
		OLED_ShowString(3,1,"RST");
		Delay_ms(500);
		OLED_ShowString(3,1,"   ");
		Delay_ms(100);
	}
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//开启时钟
	
	WWDG_SetPrescaler(WWDG_Prescaler_8);//配置预分频 超时时间为50ms,窗口时间为30ms
	WWDG_SetWindowValue(0x40 | 21);//设置窗口值,W[5:0]=21,W6=1
	WWDG_Enable(0x40 | 54);//使能,启动看门狗,T[5:0]=54,T6=1
	
	while(1)
	{
		Button_GetNum();
		
		OLED_ShowString(4,1,"FEED");
		Delay_ms(20);
		OLED_ShowString(4,1,"    ");
		Delay_ms(20);//31就过早喂狗,50就过迟喂狗,复位
		
		WWDG_SetCounter(0x40 | 54);//喂狗,CNT的值为0x40 | 54
	}
}

3、实现效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

URLDNS利用链

利用链分析在我的Github主页 Java反序列化学习 下面写下POC思路 利用点HashMap的readObject private void readObject(java.io.ObjectInputStream s)throws IOException, ClassNotFoundException {// Read in the threshold (ignored), loadfactor, and any hidden stuffs.de…

JAVAWeb---- 数据库的简单了解

目录 1.什么是数据库 2.什么是数据库管理系统 3.什么是SQL 4.什么是关系型数据库 1.什么是数据库 用来存储和管理数据的“仓库”,简称DB(Database); 2.什么是数据库管理系统 对数据库的一切操作都是在数据库管理系统进行的,比如MySQL&a…

Ollama深度探索:AI大模型本地部署的全面教程

目录 引言一、Ollama概述1、定义与定位2、核心功能3、技术优势4、应用场景 二、安装与配置1、系统要求2、安装方法3、配置指南4、启动Ollama服务 四、快速开始1、启动Ollama2、部署运行模型3、REEST API 五、自定义模型1、定制化的必要性2、使用Modelfile定制模型3、参数调整4、…

【数据结构与算法】树的存储,森林 详解

树的几种存贮结构(双亲表示法、孩子表示法、孩子兄弟表示法)的优缺点,各自适应的运算。 双亲表示法: 优点:方便查找双亲及其祖先结点缺点: 查找孩子和兄弟结点比较费事未表示出结点之间的先后次序 适应的运算:查找节点…

iOS封装FrameWork

我们是整个项目封装给客户app用,项目里面有资源文件:xib和图片文件。有第三方,也有.a文件和第三方给我们的frameWork。下面记录下大体遇到的问题及遇到的冲突解决办法。 第一部分:封装frameWork 1.首先准备好,要封装的…

无线领夹麦克风哪款好,领夹麦克风哪个品牌好,多款麦克风推荐

​科技发展让无线领夹麦克风成为现代演讲、演出和采访不可或缺的工具。这种小巧便携的设备让我们摆脱线缆束缚,自由移动同时保持声音清晰稳定。无线领夹麦克风怎么选呢?接下来,我们介绍几款市面上综合表现相当不错的无线领夹麦克风给大家来参…

几十块就能“开盒”,还能查祖上三代?

近期,网络上突然开始掀起一阵“人肉开盒”风波。明星、博主、素人无一幸免。 隐匿在此般恶劣行径背后的幕后黑手们无视法律、充满戾气。他们才不管你是什么人,只要有哪里让他们不愉快,那么不好意思,马上“开”你没商量。 这个“…

ubuntu下同时安装和使用不同版本的库 librealsense

apt 安装的最新版本在/usr 源码安装的旧版本在/usr/local set(realsense2_DIR /usr/local/) find_package(realsense2 2.50.0 REQUIRED) message( "\n\n ${realsense2_INCLUDE_DIR} ${realsense2_VERSION} RealSense SDK 2.0 is FINDINGING, please install it from…

Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码

Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP,适合做猫狗宠物类的发信息发布,当然懂的修改一下,做其他信息发布也是可以的。 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码

WPF 深入理解六、ControlTemplate控件模板

ControlTemplate 定义 控件模板用于来定义控件的外观、样式,还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 对与WPF当中,每个控件都是无外观的,这意味着我们可以完全自定义其可视元素的外观,但是不能修改其内部的行为&#xf…

【MySQL系列】MySQL 字符集的演变与选择

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

HUSKY:一个优化大语言模型多步推理的新代理框架

推理被高度认可为生成人工智能的下一个前沿领域。通过推理,我们可以将任务分解为更小的子集并单独解决这些子集。例如以前的论文:思维链、思维树、思维骨架和反射,都是最近解决LLM推理能力的一些技术。此外推理还涉及一些外围功能&#xff0c…

Rust高性能日志库tklog0.0.8—支持mod设置参数

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数…

每日一题——力扣104. 二叉树的最大深度(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 目录 我的写法 代码功能 代码结构 时间复杂度分析 空间复杂度分析 总结 我要更强 优化方法:迭代&…

20240620在飞凌OK3588-C的LINUX系统启动的时候拉高3个GPIO口141-111-120【方法二】

20240620在飞凌OK3588-C的LINUX系统启动的时候拉高3个GPIO口141-111-120【方法二】 2024/6/20 9:05 缘起:在凌OK3588-C的LINUX R4系统启动的时候,需要拉高GPIO4_B5、GPIO3_B7和GPIO3_D0。 cat sys/kernel/debug/gpio cat /sys/kernel/debug/pinctrl/pin…

搞IT需不需要考个软考中级?

如果你是在事业单位、银行、国企等体制内工作,建议考虑参加软考。通过软考评职称后,可以获得加薪和晋升的机会,而且晋升时也会更看重你的职称等级。我就是通过软考评定了中级职称,薪水涨了500元。 评职称并不仅仅是拿到证书就行&…

【自动驾驶】ROS小车系统、运动底盘的运动学分析和串口通信控制

文章目录 小车组成轮式运动底盘的组成轮式运动底盘的分类轮式机器人的控制方式感知传感器ROS决策主控ROS介绍ROS的坐标系ROS的单位机器人电气连接变压模块运动底盘的电气连接ROS主控与传感器的电气连接ROS主控和STM32控制器两种控制器的功能运动底盘基本组成电池电机控制器与驱…

【计算机网络体系结构】计算机网络体系结构实验-www服务器配置管理实验

一、实验内容 www服务器配置管理, wireshark数据包分析 二、实验目的 1. 了解WWW服务的体系结构与工作原理,掌握利用Microsoft的IIS实现WWW服务的基本配置,掌握WEB站点的管理 2. 利用Wireshark抓取http数据包进行分析。运行软件Wireshark…

【ARMv8/v9 GIC 系列 4 -- GIC 中断分类 SGI | PPI | SPI 及中断检测流程】

文章目录 GIC 中断分类SGI(Software Generated Interrupts)PPI(Per-Processor Interrupts)SPI(Shared Peripheral Interrupts) 中断检测流程物理中断生命周期SPI 中断检测流程PPI 和SGI中断检测流程LPI中断…

Linux基础篇

Linux 本文章是在B站的尚课听的,但是由于版本较老,而且是以centOS学习Linux,由于CentOS在10天后就不再更新,被抛弃了,痛定思痛,及时停课。但是又不想浪费笔记,前来保存一下。 文章目录 Linux前…