首先硬件要确保有外部晶振以及纽扣电池(或其他电源)给VBAT脚供电
以上是CubeMX的配置
如果要读写BKP寄存器的数据,首先要先解除BKP寄存器的写保护,代码如下
__HAL_RCC_PWR_CLK_ENABLE();//使能电源时钟 PWR
HAL_PWR_EnableBkUpAccess();//取消备份区域写保护
__HAL_RCC_RTC_ENABLE();//RTC 时钟使能
if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!=0x9193)
{
HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0x9193);
}
查源码可知,BKP寄存器一共五个地址,分别是
#define RTC_BKP_DR0 0x00000000u
#define RTC_BKP_DR1 0x00000001u
#define RTC_BKP_DR2 0x00000002u
#define RTC_BKP_DR3 0x00000003u
#define RTC_BKP_DR4 0x00000004u
每一个地址都可以存放一个32位数据,也可拆分为10个16位数据。如此可实现断电保存功能