STM32F103的备份寄存器BKP
STM32F103RBT6没有eeprom想要存一些数据怎么办?
1.可以加个外部EEPROM,
2.使用自带的备份寄存器,需要VBAT一直供电,加个小纽扣电池不是啥大问题。
下面是代码
void Param_Read(void) { uint16_t temp; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//时钟使能 PWR_BackupAccessCmd(ENABLE);//允许操作备份寄存器 temp = BKP_ReadBackupRegister(BKP_DR1);//读第一个位置备份数据 if (temp != 0x49E7) { Servo.Interval = 5; Motor.Gap = 1000; Param_Save(); return; } Motor.Gap = BKP_ReadBackupRegister(BKP_DR2); Servo.Interval = BKP_ReadBackupRegister(BKP_DR3); BKP_ClearFlag();//清除复位标志,可自行补习这部分知识,此处不多叙述 PWR_BackupAccessCmd(DISABLE);//操作完毕 }
使用并不麻烦
不同型号的备份容量也不一样STM32F103RBT6为16bit能存20字节,
人话就是能存10个16bit数据;那么地址就是BKP_DR1到BKP_DR10;其它大容量的型号能存更多。