STM32F4之备份存储

       这段时间一直在用STM32开发板做项目开发,需要将数据存储在备份SRAM中,待系统重启后可以直接调用先前的数据。在这里将自己的开发过程做个记录和总结。

       这里的代码不是很多,原理也不是很难,可以结合STM32F4开发板的《库函数开发指南》这个资料中RTC实验进行学习。具体的代码如下:

#ifndef _BACKUP_H
#define _BACKUP_H
#include "sys.h"

#define BACKUP_ENABLE  0

u8 Backup_Init(void);

#endif

#include "instruction.h"



u8 Backup_Init(){
		
	RTC_InitTypeDef  RTC_InitStructure;
  
	
#if BACKUP_ENABLE
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟
	PWR_BackupAccessCmd(ENABLE);	//使能后备寄存器访问 
//	
#else 
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, DISABLE);//失能PWR时钟
	PWR_BackupAccessCmd(DISABLE);	//失能后备寄存器访问 
	
#endif
	
	return 0;

}

//RTC_ReadBackupRegister(RTC_BKP_DR0) //向备份SRAM中读取数据,可以直接调用

//RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050);	//向备份SRAM中写入数据,可以直接调用

        整个备份SRAM存储的代码就这么多,第一部分为头文件,没有太多东西,这里就不做过多解释了。第二部分为程序的实现部分:

        首先程序中.h文件中包含了#include <backup.h>,#include <instruction.h>是包含我整个工程的所有头文件的集合,这里大家可以不用管。

        其次是u8 Backup_Init()的实现部分,程序中已经做了详细的注释,这里也就不多解释了。

        最后,整个程序实现部分最重要的是被注释掉的最后两行,这里的两行分别是向备份SRAM中读取数据向备份SRAM中写入数据,两段代码可以直接调用。其中:RTC_ReadBackupRegister(RTC_BKP_DR0)中的参数RTC_BKP_DR0是被读取的存储数据的寄存器RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050)中的参数分别是写入数据的存储寄存器,以及写入的内容

        文章很简短,但如果发现有错误或写的不合理的地方还请大佬斧正,如果觉得有用还请点个赞!!!谢谢!!!!

### STM32F4 备份寄存器使用方法及应用场景 #### 一、备份寄存器简介 STM32F4系列微控制器提供了一组特殊的存储区域——备份寄存器区,该区域可以在系统复位或掉电的情况下保持数据不丢失。这使得备份寄存器非常适合用来保存一些重要的配置参数或其他需要长期保留的数据。 #### 二、启用对备份域的操作权限 由于涉及敏感信息的安全性和稳定性考虑,在默认状态下是不允许随意读取/修改这些特殊寄存器的内容;如果想要对其进行任何操作,则需按照特定流程解除锁定状态: ```c // 开启电源管理单元与时钟使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 解锁写保护机制以便后续访问RTC和Backup Register PWR_BackupAccessCmd(ENABLE); ``` 这段代码片段展示了如何通过设置`RCC_APB1ENR`中的相应位来开启必要的时钟信号,并调用函数解锁写入权限[^4]。 #### 三、实际应用案例 当设备进入低功耗模式(如停机模式)时,通常会关闭大部分功能模块以节省电量消耗。然而对于某些场景而言,即使处于这种极端省电的状态下也希望能维持少量关键性的记录不变,这时就可以利用到备份寄存器特性了。比如计数器值、传感器采样结果或是用户自定义标志位等都可以安全地储存在这里而不必担心因断电而消失。 另外值得注意的是,在发生非法入侵尝试触发 tamper event 后整个备份区域内所有数值都会被自动清零作为防范措施之一,所以在编写应用程序逻辑时应当考虑到这一点并合理规划恢复策略。 #### 四、注意事项 - 对于不同型号的具体实现细节可能存在差异,请务必参照官方文档获取最准确指导; - 修改前最好先做好充分测试工作以免造成不必要的麻烦; - 如果不需要使用此功能建议继续保持禁用状态从而提高整体安全性水平。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值