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

别再只用Flash了!STM32F103的BKP备份寄存器实战:存20字节数据、做RTC校准、还能当事件记录器

STM32F103的BKP备份寄存器20字节数据存储的隐藏利器在嵌入式系统开发中数据存储一直是个让人头疼的问题。Flash擦写次数有限EEPROM速度慢而SRAM掉电就丢数据。但你可能忽略了STM32F103芯片中一个低调却强大的功能——BKP备份寄存器。这组由VBAT供电的特殊存储区域能在主电源断开时保存关键数据就像芯片内置的便签本随时记录重要信息而不影响主存储性能。1. BKP备份寄存器核心优势解析BKPBackup Register是STM32F103系列中一个常被低估的功能模块。它由10个16位寄存器组成BKP_DR1至BKP_DR10总共可存储20字节数据。与Flash和EEPROM相比BKP具有几个独特优势特性BKP寄存器Flash存储EEPROM擦写寿命无限次约1万次10万次写入速度单周期毫秒级毫秒级掉电保持需VBAT保持保持操作复杂度简单复杂中等关键应用场景设备运行次数统计每次上电自动1异常事件代码记录错误码存储RTC时钟校准参数保存系统状态标志存储如首次运行标志注意BKP寄存器需要VBAT电源维持数据若完全掉电包括VBAT所有数据将丢失。建议设计时添加纽扣电池作为备用电源。2. 硬件配置与初始化实战要让BKP寄存器正常工作硬件和软件都需要正确配置。以下是典型的硬件连接方案VBAT ----○---- 3.3V | [100nF] | GND当使用外部电池时VBAT ----○---- 电池 | GND ---- 电池-软件初始化流程如下void BKP_Init(void) { // 1. 使能PWR和BKP时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); // 2. 使能备份域访问 PWR_BackupAccessCmd(ENABLE); // 3. 可选配置侵入检测 BKP_TamperPinCmd(DISABLE); // 默认禁用 BKP_ITConfig(DISABLE); // 默认禁用中断 }常见问题排查无法写入数据检查是否调用了PWR_BackupAccessCmd(ENABLE)数据随机丢失确认VBAT电源稳定电压不低于1.8V侵入检测误触发检查PC13引脚电路避免浮空3. 高级应用循环事件记录器实现利用BKP有限的20字节空间我们可以实现一个精巧的循环事件记录器。下面是一个记录最近5次系统事件的实现方案#define EVENT_SLOTS 5 #define EVENT_SIZE 4 // bytes void LogEvent(uint32_t eventCode) { static uint8_t slot 0; uint16_t *base (uint16_t*)(BKP-DR1); // 写入事件数据 base[slot*2] (uint16_t)(eventCode 0xFFFF); base[slot*21] (uint16_t)((eventCode 16) 0xFFFF); // 更新索引并循环 slot (slot 1) % EVENT_SLOTS; // 写入索引标记 BKP_WriteBackupRegister(BKP_DR10, slot); } uint32_t ReadEvent(uint8_t index) { uint16_t *base (uint16_t*)(BKP-DR1); uint32_t event base[index*2]; event | ((uint32_t)base[index*21] 16); return event; }优化技巧使用DR10存储当前索引位置每个事件占用4字节2个DR寄存器采用循环覆盖策略始终保持最新5个事件4. RTC时钟校准与BKP的完美配合STM32内部RTC时钟源通常为32.768kHz晶振存在个体差异长期运行会产生累积误差。利用BKP存储校准参数可以显著提高时间精度。校准流程示例void RTC_Calibration(int8_t ppm) { // 保存校准值到BKP BKP_WriteBackupRegister(BKP_DR9, (uint16_t)ppm); // 应用校准 if(ppm 0) { // 加快时钟 RTC_SetCalibrationOutPut(RTC_CalibrationOutPut_512Hz); RTC_CalibrationClockCmd(ENABLE); } else if(ppm 0) { // 减慢时钟 RTC_SetCalibrationOutPut(RTC_CalibrationOutPut_1Hz); RTC_CalibrationClockCmd(ENABLE); } } void RTC_InitWithCalibration(void) { // 初始化RTC... // 从BKP读取上次校准值 int8_t ppm (int8_t)BKP_ReadBackupRegister(BKP_DR9); if(ppm ! 0xFF) { // 检查是否首次使用 RTC_Calibration(ppm); } }校准步骤用高精度时钟源如GPS作为参考运行24小时记录时间偏差计算ppm值1ppm0.0001%将ppm值存入BKP_DR9系统重启后自动应用校准实测表明经过校准的RTC可将月误差从±2分钟降低到±10秒以内。

相关文章:

别再只用Flash了!STM32F103的BKP备份寄存器实战:存20字节数据、做RTC校准、还能当事件记录器

STM32F103的BKP备份寄存器:20字节数据存储的隐藏利器 在嵌入式系统开发中,数据存储一直是个让人头疼的问题。Flash擦写次数有限,EEPROM速度慢,而SRAM掉电就丢数据。但你可能忽略了STM32F103芯片中一个低调却强大的功能——BKP备份…...

差分信号走线长度匹配与偏斜控制—高频高速场景核心技巧

差分信号是高速电路、射频电路的主流信号形式,USB、HDMI、PCIe、LVDS、以太网等接口全靠差分传输实现高速低干扰传输,而差分对的长度匹配是决定差分性能的核心,对内偏斜超标会直接导致差分信号失衡、共模干扰剧增、眼图闭合。​Q1&#xff1a…...

高速PCB走线长度匹配核心概念与底层逻辑

​在低速PCB设计中,走线长短似乎无关紧要,只要连通就能正常工作,但进入MHz以上高速电路、高频射频电路后,走线长度直接决定信号质量、系统稳定性,长度不匹配引发的信号偏斜更是导致产品失效的常见元凶。Q1:…...

STM32H7的Cache到底怎么配?从MPU寄存器到实战避坑,一篇讲透

STM32H7的Cache到底怎么配?从MPU寄存器到实战避坑,一篇讲透 第一次在STM32H7上启用Cache时,我遇到了一个诡异的Bug:DMA传输的数据总是比预期慢半拍。调试三天后才发现,问题出在AXI SRAM区域的Cache策略配置错误——MPU…...

通义千问1.5-1.8B-Chat-GPTQ-Int4在网络安全领域的应用:模拟攻击与防御策略分析

通义千问1.5-1.8B-Chat-GPTQ-Int4在网络安全领域的应用:模拟攻击与防御策略分析 最近和几个做安全研究的朋友聊天,他们提到一个挺有意思的痛点:做攻防演练或者安全测试的时候,经常需要构思各种攻击场景、编写测试用例&#xff0c…...

Windows10下RTABMAP+T265三维建图避坑指南:从安装到标定的完整流程

Windows10下RTABMAPT265三维建图避坑指南:从安装到标定的完整流程 在三维视觉与机器人领域,实时建图与定位技术正成为研究热点。Intel RealSense T265作为一款专为SLAM优化的追踪相机,配合RTABMAP这一强大的实时外观基准建图工具&#xff0c…...

亚德诺半导体在泰国新落成的先进制造工厂正式启用 | 美通社头条

、美通社消息:全球领先的半导体公司Analog Devices,Inc. 宣布公司在泰国新落成的先进制造工厂已经正式启用。此举将进一步提升ADI的先进制造与测试能力,同时推动公司在亚太地区形成更具韧性和可持续性的半导体生产布局。此次扩建基于ADI的混合制造战略&a…...

Youtu-VL-4B-Instruct-GGUF系统集成:在.NET框架中调用多模态模型服务

Youtu-VL-4B-Instruct-GGUF系统集成:在.NET框架中调用多模态模型服务 最近在做一个智能内容审核的项目,需要让系统不仅能看懂文字,还得能理解图片里的信息。团队评估了一圈,发现腾讯开源的Youtu-VL-4B-Instruct这个多模态模型挺合…...

OpenClaw多模型切换:ollama-QwQ-32B与Qwen1.5双接口配置指南

OpenClaw多模型切换:ollama-QwQ-32B与Qwen1.5双接口配置指南 1. 为什么需要多模型切换 去年冬天,当我第一次尝试用OpenClaw自动生成技术文档时,发现了一个有趣的现象:同一个模型在处理创意性内容和结构化代码时的表现差异巨大。…...

基金公司集体布局播客,不好好干金融玩耳朵经济想干嘛?

这些年,伴随着金融市场的竞争日趋白热化,各家金融机构是八仙过海各显神通,通过各种手段来获客拉客,在这其中最近一个新趋势开始出现了,这就是各家基金公司开始全面布局播客,不好好干金融去玩耳朵经济&#…...

NetApp NVME SSD 盘的学习笔记

写在前面最近在研究NetApp的NVME扩展柜NS224,于是就有了对于NetApp NVME SSD盘的一些问题,看到市面上有各种NVME的盘,但是NetApp的ONTAP是如何支持的,花了些时间研究了下,下面就是这个学习和整理的笔记,有了…...

VSCode+GitHub新手必看:5分钟搞定代码上传(附.gitignore配置技巧)

VSCodeGitHub新手指南:零基础可视化代码托管全流程 第一次将代码推送到GitHub时,我盯着终端里红色的报错信息手足无措。作为过来人,我完全理解新手面对版本控制系统的迷茫——那些晦涩的命令行操作就像一堵高墙。但别担心,这篇指…...

Outlook客户端登录世纪互联邮箱常见错误代码CAAC03ED的排查与修复指南

1. 错误代码CAAC03ED现象解析 当你用Outlook客户端登录世纪互联版邮箱时,突然弹出一个红色警告框,显示"此用户名可能不正确",或者更直接地告诉你遇到了错误代码CAAC03ED。这种情况通常发生在输入完账号密码点击登录之后&#xff0c…...

Ollama部署granite-4.0-h-350m多场景案例:政务公文摘要、新闻稿生成、会议纪要整理

Ollama部署granite-4.0-h-350m多场景案例:政务公文摘要、新闻稿生成、会议纪要整理 1. 快速上手granite-4.0-h-350m模型 granite-4.0-h-350m是一个轻量级但功能强大的指令模型,专门为各种文本处理任务设计。这个模型最大的特点是体积小巧但能力全面&am…...

避坑指南:解决‘api-ms-win-crt-runtime.dll缺失‘报错时90%人会犯的3个错误

深度解析:Windows系统DLL缺失报错的高效排查与修复策略 当你在Windows系统上运行某个软件时,突然弹出一个令人困惑的错误提示:"api-ms-win-crt-runtime.dll缺失"或"无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-w…...

SeqGPT-560M效果展示:新闻通稿中自动识别机构、事件、时间三元组

SeqGPT-560M效果展示:新闻通稿中自动识别机构、事件、时间三元组 1. 项目简介 SeqGPT-560M是一个专门为企业级信息抽取需求定制开发的智能系统。与常见的聊天对话模型不同,这个系统专注于一件事:从非结构化文本中精准提取关键信息。 系统基…...

手机远程操控Windows与Ubuntu:VNC连接实战指南

1. 为什么需要手机远程控制电脑? 想象一下这样的场景:你正在出差,突然需要查看家里电脑上的某个文件;或者你的Ubuntu服务器放在机房,但手边没有显示器;又或者你想躺在沙发上用手机控制书房里的Windows电脑播…...

STM32实战指南:从零构建智能窗户控制系统(硬件选型+软件逻辑+数据可视化)

1. 智能窗户系统设计思路 第一次接触智能家居项目时,我被各种传感器和执行器的组合搞得晕头转向。直到亲手完成这个智能窗户系统,才发现原来从零开始搭建一个完整的物联网设备并没有想象中那么难。这个系统最吸引人的地方在于,它完美展现了如…...

RAGFlow实战:解决DeepSeekR1模型配置中的102错误(Ollama端口避坑指南)

RAGFlow实战:解决DeepSeekR1模型配置中的102错误(Ollama端口避坑指南) 在AI模型部署的实践中,容器化技术已成为主流选择。但当RAGFlow与DeepSeekR1这类前沿模型相遇时,网络配置的细微差异往往会导致令人头疼的连接问题…...

CentOS7下Tailscale子网路由配置全攻略:从安装到内网穿透实战

CentOS7下Tailscale子网路由配置全攻略:从安装到内网穿透实战 在远程办公和分布式团队协作成为常态的今天,如何安全高效地实现多地内网互联成为许多中小企业和个人开发者的刚需。Tailscale作为基于WireGuard的现代组网工具,凭借其零配置、端到…...

6.1.1 数据库技术的发展(三阶段演进)

数据管理技术从早期到现代的三个核心发展阶段,清晰对比了各阶段的背景、特点与优缺点。一、基础概念先理清数据处理:对数据进行收集、存储、加工、传播的一系列活动。数据管理:对数据进行分类、组织、编码、存储、检索和维护的活动&#xff0…...

【ESP32】学习笔记04.工程架构、组件

学习笔记:ESP32 笔记内容:04.工程架构、组件 日期:2026年3月22日 参考视频:视频1 视频2,从25:00开始讲工程架构 📖 目录一、工程架构二、ESP-IDF 的核心组件分层(从底层到应用)三、一…...

Leather Dress Collection保姆级教程:LoRA权重滑动条精细调节实操演示

Leather Dress Collection保姆级教程:LoRA权重滑动条精细调节实操演示 1. 项目介绍 Leather Dress Collection 是一个基于Stable Diffusion 1.5的LoRA模型集合,专门用于生成各种皮革服装风格的图像。这个系列包含了12个不同风格的皮革服装模型&#xf…...

Local AI MusicGen入门必看:Text-to-Music一键部署实操手册

Local AI MusicGen入门必看:Text-to-Music一键部署实操手册 1. 快速了解:你的私人AI作曲家 Local AI MusicGen是一个基于Meta MusicGen-Small模型的本地音乐生成工具。它最大的特点就是简单易用——你不需要懂任何乐理知识,只需要输入一段文…...

3步快速配置Ryujinx:免费Switch模拟器终极使用指南

3步快速配置Ryujinx:免费Switch模拟器终极使用指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款采用C#语言开发的免费开源Nintendo Switch模拟器&#xff…...

SOONet模型计算机组成原理教学应用:定位CPU工作原理讲解片段

SOONet模型在计算机组成原理教学中的应用:精准定位CPU工作原理讲解片段 1. 引言:当复杂课程遇上精准学习 你有没有过这样的经历?为了搞懂《计算机组成原理》里一个抽象的概念,比如“CPU流水线”或者“缓存一致性”,不…...

面试官与水货程序员谢飞机的奇妙面试之旅(一)

面试官与水货程序员谢飞机的奇妙面试之旅本文纯属虚构,仅供娱乐学习使用开场白 今天要给大家分享一个有意思的面试故事。我们的主角谢飞机同志,某三本院校计算机专业毕业,自学Java两年,自认为掌握了"Java核心知识"&…...

Flutter气泡框避坑指南:为什么你的conicTo总画不出完美三角形?

Flutter气泡框避坑指南:为什么你的conicTo总画不出完美三角形? 在Flutter开发中,自定义气泡框是常见的UI需求。许多开发者在使用Path.conicTo绘制三角形箭头时,常会遇到锐度控制不佳、曲线不自然等问题。本文将深入解析conicTo的工…...

Phi-3-mini-128k-instruct企业部署:Docker Compose编排vLLM+Chainlit服务

Phi-3-mini-128k-instruct企业部署:Docker Compose编排vLLMChainlit服务 1. 模型简介 Phi-3-Mini-128K-Instruct是一个38亿参数的轻量级开放模型,属于Phi-3系列的最新成员。这个模型经过精心训练,特别适合需要高效推理能力的应用场景。 核…...

谷歌破局:iPhone 与安卓跨系统文件共享新突破

Pixel 10 开启跨系统文件共享新时代谷歌近期宣布安卓和 iPhone 用户可实现快速文件共享,不过目前仅 Pixel 10 系列手机支持该功能。此前,iPhone 用户依赖苹果的 AirDrop 功能,只能在苹果设备间共享文件,安卓用户则借助 Quick Shar…...