STM32中独立看门狗和窗口看门狗的使用方法
独立看门狗(Independent Watchdog,IWDG)和窗口看门狗(Window Watchdog,WWDG)是STM32微控制器中提供的两种看门狗定时器。看门狗定时器是一种硬件计时器,用于监视系统的运行状态,并在系统出现故障或崩溃时执行相应的操作。下面,我将分别介绍STM32中独立看门狗和窗口看门狗的使用方法。
1. 独立看门狗(IWDG)的使用方法
独立看门狗是一个简单的看门狗定时器,它基于硬件提供的时钟,独立于系统时钟。主要用于监视系统中断的处理时间,确保系统在正常工作时定期喂狗,从而避免系统崩溃或卡死。以下是使用IWDG的基本步骤:
步骤1:配置看门狗时钟
为了使用IWDG,首先需要配置看门狗时钟。通过RCC寄存器设置,可以选择不同的时钟源和分频系数。
步骤2:初始化并启动IWDG
通过IWDG寄存器的设置,可以配置独立看门狗的溢出时间和预分频器。首先,需要将IWDG->KR寄存器设置为IWDG_KEY_ENABLE,以使能对IWDG寄存器的写操作。然后,配置IWDG->PR寄存器设置预分频器,IWDG->RLR寄存器设置溢出时间。最后,将IWDG->KR寄存器设置为IWDG_KEY_RELOAD,以重新加载计数器,并开始看门狗计时。
步骤3:喂狗
在系统正常工作期间,需要定期喂狗以防止独立看门狗溢出。通过执行IWDG->KR寄存器的写入操作,将其设置为IWDG_KEY_RELOAD,来重新加载计数器。
下面是一个简单的示例代码,演示了如何使用独立看门狗:
```c
#include "stm32f4xx.h"void IWDG_Configuration(void)
{// 步骤1:配置看门狗时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_IWDG, ENABLE);RCC_LSICmd(ENABLE);while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);// 设置IWDG预分频器和溢出时间IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_256); // 预分频系数为256IWDG_SetReload(0xFFF); // 溢出时间为0xfff * (4/LSI)秒// 启动独立看门狗IWDG_ReloadCounter();IWDG_Enable();
}int main(void)
{// 系统初始化和其他配置// IWDG配置IWDG_Configuration();while (1){// 系统正常工作// 定期喂狗IWDG_ReloadCounter();}
}
```
2. 窗口看门狗(WWDG)的使用方法
窗口看门狗是一种更高级的看门狗定时器,它可以根据设置的窗口值和计数器值来判断系统的工作状态。要确保系统正常工作,计数器的值必须在窗口范围内。以下是使用WWDG的基本步骤:
步骤1:配置看门狗时钟
与独立看门狗类似,需要配置看门狗时钟。通过RCC寄存器设置,可以选择不同的时钟源和分频系数。
步骤2:初始化并启动WWDG
通过WWDG寄存器的设置,可以配置窗口看门狗的窗口值和计数器值。首先,需要将WWDG->CFR寄存器设置为WWDG_CFR_WDGTB和WWDG_CFR_W窗口值和计数器正常工作时的设置。然后,将WWDG->CR寄存器设置为WWDG_CR_T设置计数器值。最后,通过执行WWDG->CR寄存器的写入操作,将其设置为WWDG_CR_WDGA,以启动窗口看门狗。
步骤3:喂狗
在系统正常工作期间,同样需要定期喂狗。通过执行WWDG->CR寄存器的写入操作,将其设置为WWDG_CR_WDGA,以确保计数器值在窗口范围内。
以下是一个简单的示例代码,演示了如何使用窗口看门狗:
```c
#include "stm32f4xx.h"void WWDG_Configuration(void)
{// 步骤1:配置看门狗时钟RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);// 设置窗口看门狗的窗口值和计数器值WWDG_SetPrescaler(WWDG_Prescaler_8); // 预分频系数为8WWDG_SetWindowValue(0x4F); // 窗口值为0x4F,计数器范围为[0x40, 0x4F]WWDG_Enable(WWDG_Prescaler_8, 0x4F); // 计数器的值为0x4F// 启动窗口看门狗WWDG_EnableIT();WWDG_ClearFlag();WWDG_Enable(0x4F);
}int main(void)
{// 系统初始化和其他配置// WWDG配置WWDG_Configuration();while (1){// 系统正常工作// 定期喂狗WWDG_SetCounter(0x4F);}
}
```
以上是独立看门狗(IWDG)和窗口看门狗(WWDG)的基本使用方法和示例代码。在实际应用中,可以根据需要进行更多的配置和定制。请注意,在使用看门狗时,务必确保定期喂狗,以免触发看门狗复位。同时,看门狗定时器的设置应根据系统的实际情况进行调整,以提供适当的容错能力。
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击这里,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦。
点击链接扫码进入嵌入式交流群 https://fss.mpay8.cn/article/dmrjinh2C6fjejm
相关文章:
STM32中独立看门狗和窗口看门狗的使用方法
独立看门狗(Independent Watchdog,IWDG)和窗口看门狗(Window Watchdog,WWDG)是STM32微控制器中提供的两种看门狗定时器。看门狗定时器是一种硬件计时器,用于监视系统的运行状态,并在…...
刷题笔记(第七天)
1.找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~) 返回数组,格式为 key: value结果数组不要求顺序 输入: var C function() {this.foo ‘bar’; this.baz ‘bim’;}; C.prototype.bop ‘bip’; iterate(new C()); 输出…...
python3.7 + pygame1.9.3实现小游戏《外星人入侵》(五):计分
本小节首先在游戏画面中添加一个Play按钮,用于根据需要启动游戏,为此在game_stats.py中输入以下代码: class GameStats():def __init__(self,ai_settings):# 初始化统计信息self.ai_settings ai_settingsself.reset_stats()#让游戏一开始处…...
[量化投资-学习笔记014]Python+TDengine从零开始搭建量化分析平台-Python知识点汇总
以下内容总结了之前章节涉及到的 Python 知识点,看过之前的章节同学,就不用打开了。 1. Restful 访问 TDengine 数据库 知识点: 发送给 TDengine 的 HTTP Body 里面是 SQL 明文,请求方式为 POST。TDenging 返回的结果是 JSON 格…...
[论文分享] Never Mind the Malware, Here’s the Stegomalware
Never Mind the Malware, Here’s the Stegomalware [IEEE Security & Privacy 2022] Luca Caviglione | National Research Council of Italy Wojciech Mazurczyk | Warsaw University of Technology and FernUniversitt in Hagen 近年来,隐写技术已逐渐被观…...
代号:408 —— 1000道精心打磨的计算机考研题
文章目录 📋前言🎯计算机科学与技术专业介绍(14年发布)🧩培养目标🧩毕业生应具备的知识和能力🧩主要课程 🎯代号:408🔥文末送书🧩有什么优势&…...
《QT从基础到进阶·十六》QT实现客户端和服务端的简单交互
QT版本:5.15.2 VS版本:2019 客户端程序主要包含三块:连接服务器,发送消息,关闭客户端 服务端程序主要包含三块:打开消息监听,接收消息并反馈,关闭服务端 1、先打开服务端监听功能 …...
行业追踪,2023-11-13
自动复盘 2023-11-13 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
开放领域对话系统架构
开放领域对话系统是指针对非特定领域或行业的对话系统,它可以与用户进行自由的对话,不受特定领域或行业的知识和规则的限制。开放领域对话系统需要具备更广泛的语言理解和生成能力,以便与用户进行自然、流畅的对话。 与垂直领域对话系统相比…...
终端神器:tmux
安装tmux简单使用自己的理解(小白专属) 使用的初衷: 在Linux终端下,由于session(会话)和windows(窗口)是绑定一起的,你打开一个终端的黑窗口就是打开一个会话,…...
Elasticsearch学习(一)
ElasticSearch学习(一) 1 什么是Elasticsearch 1.什么是搜索? 百度:我们比如说想找寻任何信息时候就会上百度上搜索一下 比如说:电影、图片、小说等等…(提到搜索的第一印象) 百度 &#x…...
CSS3的常见边框汇总
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}body {background-color: #F7F7F7;}.wr…...
酷柚易汛ERP-购货订单操作指南
1、应用场景 先下购货订单,收货入库后生成购货单。 2、主要操作 2.1 新增购货订单 打开【购货】-【购货订单】新增购货订单。(*为必填项,其他为选填) ① 录入供应商:点击供应商字段框的 ,在弹框中选择供…...
【数据仓库】数仓分层方法详解与层次调用规范
文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层?1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层…...
记一次线上问题引发的对 Mysql 锁机制分析
背景 最近双十一开门红期间组内出现了一次因 Mysql 死锁导致的线上问题,当时从监控可以看到数据库活跃连接数飙升,导致应用层数据库连接池被打满,后续所有请求都因获取不到连接而失败 整体业务代码精简逻辑如下: Transaction p…...
Android 工厂模式距离传感器逻辑优化
Android 工厂模式距离传感器逻辑优化 接到客户反馈提到距离传感器校准完毕之后,每次测试完成界面都会弹出“请点击校准按钮进行校准!”Toast弹窗,需要对弹窗的显示逻辑进行优化,即只让其在首次进入距离传感器测试界面时弹出&#…...
Dell笔记本电脑 启动时提示解决
https://www.dell.com/support/kbdoc/en-us/000139731/what-the-headless-operation-mode-active-post-message-means-and-how-to-stop-it-appearing-during-start-up dell官方解释: 提示来自于BIOS/UEFI固件中POST Behaviar,只要打开了忽略警告、错误…...
【人工智能Ⅰ】7-KNN 决策树
【人工智能Ⅰ】7-KNN & 决策树 7-1 KNN(K near neighbour) 思想:一个样本与数据集中的k个样本最相似,若这k个样本大多数属于某类别,则该个样本也属于这类别 距离度量 样本相似性用欧氏距离定义 L p ( x i , x…...
【LeetCode】26. 删除有序数组中的重复项
26. 删除有序数组中的重复项 难度:简单 题目 给你一个 非严格递增排列 的数组 nums ,请你原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素…...
K8S知识点(八)
(1)实战入门-Label 通过标签实现Pod的区分,说白了就是一种标签选择机制 可以使用命令是否加了标签: 打标签: 更新标签: 筛选标签: 修改配置文件,重新创建一个pod 筛选࿱…...
如何利用社交媒体平台来优化网站SEO
如何利用社交媒体平台来优化网站SEO 在当今的数字化时代,社交媒体已经成为每个企业和个人不可或缺的一部分。作为网站运营者,我们常常面临如何通过社交媒体平台来优化网站SEO(搜索引擎优化)的问题。本文将深入探讨这一话题&#…...
OpenClaw极简安装:Docker版Qwen3-32B镜像五分钟部署
OpenClaw极简安装:Docker版Qwen3-32B镜像五分钟部署 1. 为什么选择Docker部署OpenClaw 上周我在本地尝试手动部署OpenClaw时,被各种依赖冲突折磨得够呛。从Node.js版本不兼容到CUDA驱动问题,整整浪费了两天时间。直到发现星图平台的Qwen3-3…...
多智能体工程实践升级版:基于 Spring AI Alibaba 构建可扩展、高并发、生产级方案策划系统
多智能体工程实践升级版:基于 Spring AI Alibaba 构建可扩展、高并发、生产级方案策划系统 1. 引言 当业务问题从“问答”升级到“方案生成、任务拆解、跨角色协同、执行闭环”时,单一智能体往往很快碰到能力边界。 原因并不复杂: 单 Agent 擅长基于统一上下文做推理,但…...
告别阻塞!Python asyncio子进程通信全攻略(含ls/echo等实例代码)
Python异步编程实战:asyncio子进程通信深度解析 在当今高并发的开发环境中,传统的同步子进程调用方式已经成为性能瓶颈的罪魁祸首。想象一下,当你的Python应用需要同时处理数十个外部命令调用时,那些无谓的等待时间会让整个系统的…...
人到中年,生日收到这三条短信,我读了很久
手机屏幕亮了一下。 我拿起来,以为是工作消息,结果是中国工商银行的短信: 紧接着,第二条进来了——中国联通: 第三条,是母校辽工大发来的: 我看着这三条短信,愣了很久。 没有酒局的邀…...
[具身智能-230]:大模型编程的一个最佳实践:先通过自然语言让大模型编写Python语言代码,功能和性能调通后,再让大模型把python程序转换成C++或其他语言的程序
这种“Python 原型验证 C 性能落地”的开发模式,完美契合了大模型(LLM)的能力特点以及现代软件工程的需求。结合最新的行业实践和技术原理,我为你深度解析为什么这种工作流如此有效,以及在实际操作中需要注意的关键点…...
AI率85%降到15%的完整操作流程,一步一步来
AI率85%,这不是个小问题,但也不是无解的问题。我把整个处理流程拆成了具体步骤,照着来就行,没什么复杂的。 在开始之前,明确一件事 AI率85%的论文,靠手动修改降到15%,从理论上讲是可行的&…...
别再只认M1卡了!沁恒CH58x读取NDEF Type2标签的完整数据解析指南
沁恒CH58x深度解析NDEF Type2标签:从字节到可读信息的完整指南 当你第一次用沁恒CH58x系列芯片成功读取到NFC Forum Type2标签的原始数据时,面对那44个数据块和一堆十六进制数字,是否感到无从下手?本文将带你深入Type2标签的数据结…...
终极Windows内存优化指南:用Mem Reduct释放被浪费的RAM资源
终极Windows内存优化指南:用Mem Reduct释放被浪费的RAM资源 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...
python tarfile
# Python tarfile模块:不止是打包与解包 在Python的标准库中,tarfile模块常常被开发者们忽视,或者仅仅被当作一个简单的压缩工具来使用。实际上,这个模块的功能远比表面看起来要丰富得多,它处理的是tar格式的归档文件…...
