首先要确保有外部电源给VBAT供电
生成后应该会有这两个文件(不知道为什么生成了好几次都没有,复制工程在试一次就有了)
可以看到stm32f407有20个备份寄存器
读写函数
void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister)
如果要读写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);
}