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

stm32之看门狗

        STM32 有两个看门狗,独立看门狗窗口看门狗,独立看门狗又称宠物狗,窗
口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同时会产生一个中断。
独立看门狗 (IWDG) 由专用的内部低速时钟 (LSI) 驱动,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动。
独立看门狗代码
窗口看门狗代码

一、独立看门狗

1.1、独立看门狗主要功能  

自由运行的递减计数器(由LSI驱动的12位计数器)
看门狗被激活后,则在计数器计数至0x000时产生复位

时钟由独立的RC振荡器提供(可在停止和待机模式下工作)

1.2、独立看门狗框图

1.3、独立看门狗时钟

        独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效,非常独立。 LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ , 所以独立看门狗的定时时间并不一定非常精确,只适用于对时间精度
要求比较低的场合

1.4、计数器时钟

        递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,可以操作预分频器寄存器 IWDG_PR 来设置分频因子。下面是PR(Prescaler Register)寄存器

分频系数算法:

        

prer 是PR[2:0]设置的值。

1.5、计数器

        独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生 一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的 值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗

1.6、重装载寄存器

重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。
溢出时间公式:
例:如果PSC = 64, RLR = 625,正常情况下f(iwdg) = 40khz, 那么溢出时间t = 1s。

1.7、键寄存器

功能描述如下:
键值键值作用
0XAAAARLR 的值重装载到 CNT
0X5555
PR RLR 这两个寄存器可写
0XCCCC 启动 IWDG

1.8、状态寄存器

       

状态寄存器 SR 只有位 0 PVU 和位 1 RVU 有效,这两位只能由硬件操作,软件操作不了。

1.9、简单case

 外设: 串口、灯,按键
描述:开启独立看门狗,如果不按键串口会间隔1s一直打印“启动中...”,如果按键按下,喂狗,
灯会亮,串口不再打印数据
核心代码如下:
  HAL_UART_Transmit(&huart2, "程序启动。。\r\n", strlen("程序启动。。\r\n"), 100);while (1){if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {HAL_IWDG_Refresh(&hiwdg);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,GPIO_PIN_RESET);}HAL_Delay(500);}

二、窗口看门狗

        窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。

        窗口看门狗的本质是一个能产生系统复位信号提前唤醒中断的7位计数器。

2.1、窗口看门狗主要功能  

可编程的自由运行的递减计数器(7位计数器)
递减计数器的值小于0x40 和 在递减计数器在窗口外被重新装载产生复位
(看门狗启动时)

开启中断下,当递减计数器等于0x40时产生早期唤醒中断(EWI),在函数内可进行喂狗操作

2.2、窗口看门狗框图

2.3、窗口看门狗原理

T[6:0]: 7位计数器,存在于CR寄存器

W[6:0]: 7位窗口值,存在于CFR寄存器

CR寄存器

CFR寄存器

SR寄存器(只有最低位有用,产生中断时需要软件清0)

2.4、窗口看门狗时序图

看门狗中只有T[5:0]位用来配置计数器,T6是始终是1,当产生复位是T6= 0.

溢出公式如下:

  • ToutWWDG超时时间(没喂狗)
  • FwwdgWWDG的时钟源频率(最大36M
  • 4096WWDG固定的预分频系数
  • 2^WDGTBWWDG_CFR寄存器设置的预分频系数值
  • T[5:0]WWDG计数器低6位,最多63

T[6:0] 最高127,减到0x3f(63)会产生复位,127- 63 = 64,T[6:0]最高位是1,所以T[5:0]最大是63

2.5、简单case

 外设: 两个灯,窗口看门狗
描述:一个灯启动时由亮到灰,一个灯一直在闪烁(配置在中断里,中断里喂狗)

核心代码

void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg) {HAL_WWDG_Refresh(hwwdg);HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
}main------>MX_GPIO_Init();HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);HAL_Delay(300);MX_WWDG_Init();while (1){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);HAL_Delay(40);}

三、两个看门狗区别

相关文章:

stm32之看门狗

STM32 有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同…...

纤维蛋白单体(FM)介绍

纤维蛋白单体(FM)是血栓形成的早期产物,是纤维蛋白原(Fibrinogen,Fbg)在凝血酶(Thrombin)的作用下,脱掉肽A(Fibrinopeptide A,Fp A)与…...

知识图谱实战导论:从什么是KG到LLM与KG/DB的结合实战

前言 本文侧重讲解: 什么是知识图谱LLM与langchain/数据库/知识图谱的结合应用 比如,虽说基于知识图谱的问答 早在2019年之前就有很多研究了,但谁会想到今年KBQA因为LLM如此突飞猛进呢 第一部分 知识图谱入门导论 //待更.. 第二部分 LLM与…...

第5章 会话与会话技术

第5章 会话与会话技术 一. 单选题(共5题,50分)二. 判断题(共5题,50分) 一. 单选题(共5题,50分) (单选题) 阅读下面代码: Book book BookDB.getBook(id)…...

IDEA2023新UI回退老UI

idea2023年发布了新UI,如下所示 但是用起来真心不好用,各种位置也是错乱,用下面方法可以回退老UI...

ElasticSearch(三)

1.数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些…...

【LinkedHashMap】146. LRU 缓存

146. LRU 缓存 解题思路 与普通的 HashMap 不同,LinkedHashMap 会保持元素的有序性。这可以在某些情况下提供更可预测的迭代顺序直接获取元素 因为使用到该元素 将该元素重新放入队尾 表示最近使用该元素写入元素,首先如果该元素原来存在 那么需要将ke…...

Opencv-python去图标与水印方案实践

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色&#xff…...

自己写过比较蠢的代码:从失败中学习的经验

文章目录 引言1. 代码没有注释2. 长函数和复杂逻辑3. 不恰当的变量名4. 重复的代码5. 不适当的异常处理6. 硬编码的敏感信息7. 没有单元测试结论 🎉 自己写过比较蠢的代码:从失败中学习的经验 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&a…...

C语言 cortex-A7核 点LED灯 (附 汇编实现、使用C语言 循环实现、使用C语言 封装函数实现【重要、常用】)

1 汇编实现 text global _start start: ************** LED1点灯 ---> PE10 **************/ ************** RCC章节初始化 **************/ CC_INIT:1.使能GPIOE组控制器,通过RCC_MP_AHB4ENSETR寄存器设置GPIOE组使能0x50000A28[4] 1ldr r0,0x50000A28 准…...

LABVIEW 实战案例1--温度报警系统

图1 温度报警系统前面板 图2 温度报警系统后面板...

【力扣】292. Nim 游戏

题目描述 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数…...

IAP固件升级分几步?(Qt上位机、)

前言 这周一直想做一个IAP固件升级的上位机,然后把升级流程全都搞懂 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com IAP原理 IAP的原理我就不多赘述了,这里贴上几位大佬的文章 STM32CubeIDE IAP原理讲解,及U…...

Otter改造 增加springboot模块和HTTP调用功能

环境搭建 & 打包 环境搭建: 进入 $otter_home/lib 目录执行:bash install.sh 打包: 进入$otter_home目录执行:mvn clean install -Dmaven.test.skip -Denvrelease发布包位置:$otter_home/target 项目背景 阿里…...

Vue.js vs React:哪一个更适合你的项目?

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

Debian环境下搭建STM32开发环境

1. 安装交叉编译工具,解压gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2,并且把交叉编译环境添加到path路径。 2.安装下载工具驱动和下载工具 # 安装下载工具openocd sudo apt -y install openocd 3.下载测试 sudo openocd -f cmsis-dap.cfg -…...

如何防止商业秘密泄露(洞察眼MIT系统商业机密防泄密解决方案)

在当今的商业环境中,保护公司的商业秘密是至关重要的。商业秘密可能包括独特的业务流程、客户列表、研发成果、市场策略等,这些都是公司的核心竞争力。一旦这些信息被泄露,可能会对公司的生存和发展产生重大影响。本文将探讨如何通过使用洞察…...

题目 1062: 二级C语言-公约公倍

输入两个正整数m和n,求其最大公约数和最小公倍数。样例输入 2 3样例输出 1 6 这题一知半解的, 最小公倍数两数の积/最大公约数; 最大公约数通过迭代法求得(见其下), 作为a,b两数有一个属为有一个为0为无效数据时 《-----a%b等…...

【Leetcode】148.排序链表

一、题目 1、题目描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例1: 输入:head = [4,2,1,3] 输出:[1,2,3,4]示例2: 输入:head = [-1,5,3,4,0] 输出:[-1,0,3,4,5]示例3: 输入:head = [] 输出:[]提示: 链表中节点的数目在范围 [0, 5 …...

用《斗破苍穹》的视角打开C#多线程开发1(斗帝之路)

Thread.Start() 是的,我就是乌坦城那个斗之气三段的落魄少爷,在我捡到那个色眯眯的老爷爷后,斗气终于开始增长了。在各种软磨硬泡下,我终于学会了我人生中的第一个黄阶斗技——吸掌。 using System.Threading;namespace Framewo…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...