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;其它大容量的型号能存更多。

 

posted @ 2022-03-31 22:50  上官梦舞  阅读(824)  评论(0编辑  收藏  举报