STM32F103学习笔记(五)BKP备份寄存器(应用篇)

目录

1. BKP的应用

2. BKP在系统中的配置

2.1 BKP模块的使能和时钟配置

2.2 备份寄存器的配置

2.3 数据存储和恢复的机制

3. BKP应用实例代码

4. 总结

1. BKP的应用

        在嵌入式系统中,BKP(备份寄存器)是一个重要的功能模块,用于存储关键性的系统数据、状态信息以及实时时钟(RTC)的相关数据。通过BKP模块,我们可以在系统断电或重新启动时保持这些数据的持久性,确保系统在下次启动时能够正确地恢复状态。

注意如果使用的最小系统板的话是没有板载电池的,需要自己接上电池或者VB引脚(最小板已引出)接3.3V供电

如图部分开发版是有电池接口可以接电池的

2. BKP在系统中的配置

2.1 BKP模块的使能和时钟配置

        在开始使用BKP模块之前,需要先使能BKP时钟和模块。这通常涉及到对相应的寄存器进行配置,以确保BKP模块能够正常工作。在STM32F103系列微控制器中,可以通过设置相关的时钟控制寄存器来使能BKP时钟,然后通过设置相应的使能位来使能BKP模块。

2.2 备份寄存器的配置

        BKP模块中的备份寄存器需要根据实际需求进行配置。这包括确定要存储的数据类型、选择备份寄存器的位置、以及设置备份寄存器的初始值等。在配置备份寄存器时,需要考虑数据的重要性、大小和访问频率等因素,以便合理利用有限的备份寄存器资源。

2.3 数据存储和恢复的机制

        在系统设计中,需要明确数据存储和恢复的机制。这涉及到将需要持久保存的数据写入到备份寄存器中的方法,以及在系统重新启动时如何从备份寄存器中读取和恢复数据的方法。在实际应用中,可以采用定时存储、事件触发存储等策略来保证数据的及时更新和完整性。

3. BKP应用实例代码

        首先是BKP的初始化,这里要注意开启PWR的时钟,因为BKP需要外接小电池才能保持备份寄存器的供电,而PWR模块负责监测Vbat的电压        

//备份寄存器初始化
void BKP_Init(void)
{//备份寄存器通常需要在Vbat电压下工作(Vbat是用于保持备份寄存器内容的电源),而PWR模块负责监测Vbat电压RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);		//开启PWR的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE);		//开启BKP的时钟PWR_BackupAccessCmd(ENABLE);							//用PWR使能备份寄存器
}

        接着就是写数据和读数据了,读写数据使用库函数中提供的BKP_WriteBackupRegister和BKP_ReadBackupRegister函数,注意在stm32f103c8t6中,只有20个字节的后备数据空间,对应10个16位的备份寄存器,因此BKP_DR对应的是BKP_DR1 - BKP_DR10,如果你在c8t6中将数据写入了BKP_DR11,是没有效果的

/*在f103c8t6中,有20个字节的后备数据空间,对应10个16位的备份寄存器
BKP_DR对应BKP_DR1 - BKP_DR10
*/
uint16_t W_Save_data(uint16_t BKP_DR, uint16_t data)
{BKP_WriteBackupRegister(BKP_DR, data);	//将需要掉电保存的数据写入备份寄存器if(data == BKP_ReadBackupRegister(BKP_DR))		//读取写入的备份寄存器的数据{return 1; //如果正确读取到备份寄存器的数据,返回1}else return 0;
}uint16_t R_Save_data(uint16_t BKP_DR)
{return BKP_ReadBackupRegister(BKP_DR);
}

接着在主函数中调用初始化函数,通过对备份寄存器的读写操作(代码逻辑自拟哈)即可实现掉电记忆等功能,和普通uint16_t的数组不同的是,BKP备份寄存器掉电和复位是不会清空的 

BKP_Init();
while(W_Save_data(BKP_DR1, data[0]) == RESET);	//写入测试数据到备份寄存器
data = R_Save_data(BKP_DR1);		//读取备份寄存器的数据

4. 总结

        在BKP篇的博客中,我们探讨了BKP(备份寄存器)模块的原理和应用。首先,我们介绍了BKP模块的基本原理和工作流程,包括其在STM32F103微控制器中的硬件架构和功能特点。在应用实例代码中,我们实现了数据的备份和恢复功能。希望能对项目开发提供参考。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

Gemma模型论文详解(附源码)

原文链接:Gemma模型论文详解(附源码) 1. 背景介绍 Gemma模型是在2023.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型),Gemma这次发布了了2B和7B两个版本的参数,不…

docker部署seata1.6.0

docker部署seata1.6.0 Seata 是 阿里巴巴 开源的 分布式事务中间件,解决 微服务 场景下面临的分布式事务问题。需要先搭建seata服务端然后与springcloud的集成以实现分布式事务控制的过程 ,项目中只需要在远程调用APi服务的方法上使用注解 GlobalTransa…

Selenium定位不到元素怎么办?一定要这么做

在使用Selenium进行自动化测试时,碰到无法定位元素该怎么办?这里总结了9种情况下的元素定位方法: 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决…

如何用jmeter请求application/octet-stream,image/jpeg

用postman调用时: 用jmeter: 注意上图不要勾选,不然会把所有的内容都以二进制传进去,我们不勾选只传二进制的图片内容,勾选了会把MIME类型、参数名称都转为二进制传进去。会报错。

最优传输(Optimal Transport)

最优传输(Optimal Transport)是一种数学理论和计算方法,用于描述两个概率分布之间的距离或者对应关系。它的核心概念是如何以最佳方式将一组资源(如质量、能量等)从一个位置传输到另一个位置。 基本概念: …

【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

步骤一 准备两个服务,provider和consumer 本文使用kotlin语言 provider是服务的提供者,由provider连接数据库 RestController RequiredArgsConstructor RequestMapping("/provider/depart") class DepartController(private val departServ…

vscode与vue环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理),此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号: 配置系统变量 因为在执…

springboot213大学生心理健康管理系统的设计与实现

大学生心理健康管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,试卷信息因为其管理内容繁杂,管理…

套接字与套接字编程

对于刚刚学习计算机网络:自顶向下的同学们,在观看了中科大的视频---TCP Socket以及UDP Socket会感到些许疑惑,不过没事,在这篇小文章将会为你解开Socket的神秘面纱 什么是Socket?: Socket 是一套用于不同主机之间通信…

JAVA代码审计之XSS漏洞

Part1 漏洞案例demo&#xff1a; 没有java代码审计XSS漏洞拿赏金的案例。 所以将就看看demo吧 漏洞原理&#xff1a;关于XSS漏洞的漏洞原理核心其实没啥好说的&#xff0c;网上一查一大堆 反射性XSS漏洞 <% page language"java" contentType"text/html; c…

java——File类和字符集

目录 File类File类的常用操作&#xff1a;案例&#xff1a;文件搜索的实现案例&#xff1a;递归文件夹删除 字符集几种常见的字符集总结字符集的编码和解码 File类 File是java.io.包下的类&#xff0c;File类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以是文…