STM32入门——读写备份寄存器(19)
STM32入门——读写备份寄存器(19)
BKP简介
-
BKP(Backup Registers )备份寄存器
-
BKP可用于存储用户应用程序数据。当VDD(2.03.6V)电源被切断,他们仍然由VBAT(1.83.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。
-
TAMPER引脚产生的侵入事件将所有备份寄存器内容清除。
-
RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲
-
存储RTC时钟校准寄存器
-
用户数据存储容量:
20字节(中容量和小容量)/ 84字节(大容量和互联型)

实现代码:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Key.h"
uint8_t KeyNum; // 定义用于接收按键键码的变量
uint16_t ArrayWrite[] = {0x1234, 0x5678}; // 定义要写入数据的测试数组
uint16_t ArrayRead[2]; // 定义要读取数据的测试数组
int main(void)
{
/*模块初始化*/
OLED_Init(); // OLED初始化
Key_Init(); // 按键初始化
/*显示静态字符串*/
OLED_ShowString(1, 1, "W:");
OLED_ShowString(2, 1, "R:");
/*开启时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 开启PWR的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE); // 开启BKP的时钟
/*备份寄存器访问使能*/
PWR_BackupAccessCmd(ENABLE); // 使用PWR开启对备份寄存器的访问
while (1)
{
KeyNum = Key_GetNum(); // 获取按键键码
if (KeyNum == 1) // 按键1按下
{
ArrayWrite[0]++; // 测试数据自增
ArrayWrite[1]++;
BKP_WriteBackupRegister(BKP_DR1, ArrayWrite[0]); // 写入测试数据到备份寄存器
BKP_WriteBackupRegister(BKP_DR2, ArrayWrite[1]);
OLED_ShowHexNum(1, 3, ArrayWrite[0], 4); // 显示写入的测试数据
OLED_ShowHexNum(1, 8, ArrayWrite[1], 4);
}
ArrayRead[0] = BKP_ReadBackupRegister(BKP_DR1); // 读取备份寄存器的数据
ArrayRead[1] = BKP_ReadBackupRegister(BKP_DR2);
OLED_ShowHexNum(2, 3, ArrayRead[0], 4); // 显示读取的备份寄存器数据
OLED_ShowHexNum(2, 8, ArrayRead[1], 4);
}
}

浙公网安备 33010602011771号