STM32_HAL_RTC_解决恢复电源时再一次初始化

1问题

板子再次恢复电源时直接初始化了时间

2解决思路

在初始化函数(MX_RTC_Init();)中增加判断,判断是否是二次初始化

将值放入备份存储其中

3问题图

4解决后的源码

cpp 复制代码
/* RTC init function */
void MX_RTC_Init(void)
{

  /* USER CODE BEGIN RTC_Init 0 */
	
  /* USER CODE END RTC_Init 0 */

  RTC_TimeTypeDef sTime = {0};
  RTC_DateTypeDef DateToUpdate = {0};

  /* USER CODE BEGIN RTC_Init 1 */

  /* USER CODE END RTC_Init 1 */

  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }

  /* USER CODE BEGIN Check_RTC_BKUP */
if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!=0xA0A0)     //这里就是在检查寄存器是不是预先设定的值,如果不是,就按照STM32CubeMX默认的设置往下走。这个值是任意定的
  {
  /* USER CODE END Check_RTC_BKUP */

  /** Initialize RTC and set the Time and Date
  */
  sTime.Hours = 0x19;
  sTime.Minutes = 0x43;
  sTime.Seconds = 0x0;

  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }
  DateToUpdate.WeekDay = RTC_WEEKDAY_WEDNESDAY;
  DateToUpdate.Month = RTC_MONTH_MAY;
  DateToUpdate.Date = 0x8;
  DateToUpdate.Year = 0x24;

  if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN RTC_Init 2 */
HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, 0xA0A0);  //这里就是将这个寄存器的标志设为刚才的那个值,下次掉电后就不会进入到这里来了
}//判断为是第二次初始化时会退出初始化时间
  /* USER CODE END RTC_Init 2 */

}

5解决后的图

相关推荐
llilian_166 小时前
延迟信号发生器 延迟脉冲信号发生器在激光触发领域的应用 高速脉冲信号发生器
功能测试·单片机·嵌入式硬件·测试工具·自动化
代码游侠6 小时前
ARM嵌入式开发代码实践——LED灯闪烁(汇编版)
arm开发·笔记·嵌入式硬件·学习·架构
不怕犯错,就怕不做6 小时前
RK3562+RK817在关机状态下提升充电电流至2A解决方案
linux·驱动开发·嵌入式硬件
2023自学中7 小时前
Cortex-M系列,Cortex-A系列,汇编启动文件的区别
linux·嵌入式硬件
三伏5227 小时前
stm32f103系列手册IIC笔记2
笔记·stm32·嵌入式硬件
changzehai7 小时前
Rust + VSCode + probe-rs搭建stm32-rs嵌入式开发调试环境
vscode·后端·stm32·rust·嵌入式·probe-rs
国科安芯7 小时前
RISC-V架构抗辐照MCU在航天器载荷中的SEU/SEL阈值测试与防护策略
单片机·嵌入式硬件·安全·架构·安全威胁分析·risc-v
猫猫的小茶馆8 小时前
【Linux 驱动开发】三. 应用程序调用驱动过程分析
linux·arm开发·驱动开发·stm32·单片机·嵌入式硬件·pcb工艺
chengpei1478 小时前
Arduino环境下开发STM32
stm32·单片机·嵌入式硬件
三佛科技-134163842128 小时前
100V8A_HN0801雾化器加湿器MOS管关键特性
单片机·嵌入式硬件·物联网·智能家居·pcb工艺