学习STM32第十七天

备份域详解

一、简介

在参考手册的电源控制章节,提到了备份域,BKPR是在RTC外设中用到,包含20个备份数据寄存器(80字节),备份域包括4KB的备份SRAM,以32位、16位或8位模式寻址,在VBAT有电前提下可视为内部EEPROM

  1. 对BKP寄存器的访问

    • RCC_APB1ENR寄存器中的PWREN位置1,使能电源接口时钟
    • PWR_CR电源控制寄存器中的DBP位置1,使能对备份域的访问
    • 选择RTC时钟源
    • 通过对RCC备份域控制寄存器RCC_BDCR中的RTCEN[15]位进行编程使能RTC时钟
  2. 对BKPSRAM的访问

    • RCC_APB1ENR寄存器中的PWREN位置1,使能电源接口时钟
    • PWR_CR寄存器中的DBP位置1
    • 通过将RCC_AHB1ENR寄存器中的BKPSRANEB位置1,使能备份SRAM时钟

二、案例分析

  1. 读写备份寄存器
c 复制代码
void MyBKP_Init()
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);					//电源控制寄存器在APB1总线
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);             //备份域寄存器在AHB1总线
	
	PWR_BackupAccessCmd(ENABLE);										//使能对备份域的访问
	
	RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);								//RTC时钟源
	RCC_RTCCLKCmd(ENABLE);												//使能RTC
}
  1. 读写备份域SRAM
c 复制代码
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);					//电源控制寄存器在APB1总线
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_BKPSRAM, ENABLE);             //备份域寄存器在AHB1总线
	PWR_BackupAccessCmd(ENABLE);										//使能对备份域的访问
	
	/* 应用程序必须等待备份调压器就绪标志 (BRR) 置 1,指示在待机模式和 VBAT 模式下会保持写入 RAM 中的数据。 */
	while(PWR_GetFlagStatus(PWR_FLAG_BRR) != SET);
相关推荐
重生之我是数学王子26 分钟前
单片机 STM32入门
stm32·单片机·嵌入式硬件
eybk3 小时前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.943 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala
qq_459730034 小时前
4-3 MCU中ARM存储器的作用
arm开发·单片机·嵌入式硬件
守护者1705 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。5 小时前
Docker学习
java·开发语言·学习
Rinai_R5 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌5 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang5 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
嵌入式科普7 小时前
嵌入式科普(24)从SPI和CAN通信重新理解“全双工”
c语言·stm32·can·spi·全双工·ra6m5