当前位置: 首页 > 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…...

装修预算告急?办公室墙面选对乳胶漆+木饰面,省一半钱还显高级

办公室墙面装修,最纠结的问题莫过于:选乳胶漆还是木饰面?前者经济实用、灵活百搭,后者质感高级、温润大气,很多企业在二者之间反复权衡,却忽略了一个关键答案——乳胶漆与木饰面搭配使用,才是兼…...

OpenClaw与Cursor双向集成:打造AI驱动的自动化工作流

1. 项目概述:当OpenClaw遇上Cursor,一个双向赋能的AI大脑诞生如果你正在寻找一种方法,让你在Slack、飞书等协作工具里聊天的同时,能无缝调用一个强大的AI来帮你写代码、查文档、甚至操作GitHub,那么openclaw-cursor-br…...

掌握高效窗口管理:专业级分辨率调整工具完全指南

掌握高效窗口管理:专业级分辨率调整工具完全指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在当今多任务处理和多屏工作环境中,你是否经常遇到窗口大小不合适、分辨率限制或游戏画面…...

高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现

高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现 【免费下载链接】pdf2svg A simple PDF to SVG converter using the Poppler and Cairo libraries 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2svg 在数字化文档处理领域,PD…...

终极抢票指南:5分钟搭建全自动抢票系统,告别手速焦虑!

终极抢票指南:5分钟搭建全自动抢票系统,告别手速焦虑! 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 还在…...

nimbus-router:声明式路由增强框架,解决SPA复杂路由管理痛点

1. 项目概述:一个为现代前端应用量身定制的路由解决方案 如果你和我一样,在过去几年里深度参与过大型前端项目的开发,那你一定对路由管理这个“甜蜜的负担”深有体会。一方面,像 React Router、Vue Router 这样的库已经非常成熟&a…...

Burpsuite社区版实战指南:从零掌握渗透测试核心模块

1. Burpsuite社区版入门:环境搭建与基础配置 第一次接触Burpsuite时,我被它复杂的界面吓到了——满屏的英文标签、密密麻麻的功能按钮,还有那些看不懂的专业术语。但实际用下来发现,社区版的功能对新手非常友好。先说说下载安装&a…...

WaveTools终极指南:免费解锁鸣潮120FPS帧率限制的完整方案

WaveTools终极指南:免费解锁鸣潮120FPS帧率限制的完整方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》PC版设计的开源工具箱,通过创新技术方案帮助…...

ADB 配置 + 入门使用全攻略,零基础看完就精通

一、ADB简介 1、什么是adb ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。 ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Androi…...

多智能体安全协调中的约束推断与CBF应用

1. 多智能体安全协调中的约束推断方法概述在分布式多智能体系统中,安全协调一直是个极具挑战性的问题。想象一下,当一群机器人在仓库中协同搬运货物时,每个机器人可能只知道部分环境信息(比如某些障碍物的位置)&#x…...