OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 392|回复: 2

RTC设置的时间下电重启后设置的时间被重置为其他值

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2022-8-5
在线时间
6 小时
发表于 2025-6-13 17:00:49 | 显示全部楼层 |阅读模式
10金钱
求助下路过大佬,看看我这个是什么问题。STM32F429bit6芯片,使用hal库写的,包含boot程序和application程序。问题现象:上电时使用HAL_RTC_SetDate和HAL_RTC_SetTime设置了时间,之后使用get获取时间RTC时间,这个过程没有异常,但下电后我重新上电,再去获取RTC时间,时间会被重置为其他值


一开始我是boot里初始化了RTC,跳转application后也初始化了RTC,以为是两次初始化的缘故,就改成了只在boot里完整的初始化RTC,跳转到application后只初始化句柄,结果还是不行。
这是我的配置(被重置的值不是配置里的值)

下面是我boot初始化RTC的代码。在STM32cubeIDE上生成的初始化代码基础上加了一些
void MX_RTC_Init(void)
{

  /* USER CODE BEGIN RTC_Init 0 */
        uint16_t BkReg = 0;
  /* USER CODE END RTC_Init 0 */

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

  /* USER CODE BEGIN RTC_Init 1 */

  /* USER CODE END RTC_Init 1 */

  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }

  /* USER CODE BEGIN Check_RTC_BKUP */
  BkReg = HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0);
  if((BkReg != 0x5050) && (BkReg != 0x5051))
  {
  /* USER CODE END Check_RTC_BKUP */

  /** Initialize RTC and set the Time and Date
  */
  sTime.Hours = 0x0;
  sTime.Minutes = 0x0;
  sTime.Seconds = 0x0;
  sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }
  sDate.WeekDay = RTC_WEEKDAY_THURSDAY;
  sDate.Month = RTC_MONTH_JUNE;
  sDate.Date = 0x12;
  sDate.Year = 0x25;

  if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN RTC_Init 2 */
  //添加标志位,表明RTC已经完成初始化
  HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR0, 0x5050);
  }
  /* USER CODE END RTC_Init 2 */

}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4957
金钱
4957
注册时间
2015-1-10
在线时间
621 小时
发表于 2025-6-17 10:44:57 | 显示全部楼层
debug看一下RTC寄存器什么时候变化的
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2022-8-5
在线时间
6 小时
 楼主| 发表于 7 天前 | 显示全部楼层
阿侑kevin 发表于 2025-6-17 10:44
debug看一下RTC寄存器什么时候变化的

已经解决了 ,谢谢
一开始写完boot程序的时候,boot没初始化,app里正常初始化,RTC不工作,所以才改成了boot跟app都初始化,到现在已经过了挺久了,这几天实在没思路就又重新改成boot不初始化app初始化的方式试试,不行再查查RTC不工作的原因,结果居然好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 19:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表