BKP功能介绍:备用电源不断电,主电源断电,BKP数据不丢失
单片机:STM32F103C8T6
实现功能:写入数据给BKP外设,读取BKP外设的数据
实现步骤:
1.使能PWR的时钟 "RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);"
2.使能BKP的时钟 "RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);"
3.//启动对备份寄存器和RTC的访问 "PWR_BackupAccessCmd(ENABLE);"
4.写备份寄存器 “BKP_WriteBackupRegister(BKP_DR1,0x0000);”
5.读备份寄存器 “BKP_ReadBackupRegister(BKP_DR1);”
实现代码:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
uint16_t Write,Read;
int main(void)
{
OLED_Init();
OLED_ShowChar(1,1,'W');
OLED_ShowChar(2,1,'R');
Write=0x0000;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);//使能BKP的时钟
PWR_BackupAccessCmd(ENABLE);//启动对备份寄存器和RTC的访问
while (1)
{
// BKP_WriteBackupRegister(BKP_DR1,Write);//写备份寄存器
Read = BKP_ReadBackupRegister(BKP_DR1);//读备份寄存器
OLED_ShowHexNum(1,3,Write,4);
OLED_ShowHexNum(2,3,Read,4);
}
}
功能验证:注释写备份寄存器的代码,修改Write的数据,断主电源,保留备份电源,可以看到数据不丢失
BKP.h文件代码
BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
BKP_ReadBackupRegister(uint16_t BKP_DR);(有返回值)
PWR.h文件代码
PWR_BackupAccessCmd(FunctionalState NewState);