STM32F103 HAL库RTC掉电后日期显示2000-00-00但时间显示正常

2019-07-14 18:33发布

如题,是否有其他朋友遇到类似问题。
我分析hal库,发现在“HAL_RTC_SetDate”函数中,有怎么一条判断,才导致无法写入日期:
  /* Reset time to be aligned on the same day */
  /* Read the time counter*/
  counter_time = RTC_ReadTimeCounter(hrtc);

  /* Fill the structure fields with the read parameters */
  hours = counter_time / 3600;
  if (hours > 24)
  {
    /* Set updated time in decreasing counter by number of days elapsed */
    counter_time -= ((hours / 24) * 24 * 3600);
    /* Write time counter in RTC registers */
    if (RTC_WriteTimeCounter(hrtc, counter_time) != HAL_OK)
    {
      /* Set RTC state */
      hrtc->State = HAL_RTC_STATE_ERROR;

      /* Process Unlocked */
      __HAL_UNLOCK(hrtc);

      return HAL_ERROR;
    }

    /* Read current AlARM counter in RTC registers */
    counter_alarm = RTC_ReadAlarmCounter(hrtc);

    /* Set again alarm to match with new time if enabled */
    if (counter_alarm != RTC_ALARM_RESETVALUE)
    {
      if(counter_alarm < counter_time)
      {
        /* Add 1 day to alarm counter*/
        counter_alarm += (uint32_t)(24 * 3600);

        /* Write new Alarm counter in RTC registers */
        if (RTC_WriteAlarmCounter(hrtc, counter_alarm) != HAL_OK)
        {
          /* Set RTC state */
          hrtc->State = HAL_RTC_STATE_ERROR;

          /* Process Unlocked */
          __HAL_UNLOCK(hrtc);

          return HAL_ERROR;
        }
      }
    }
  }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
dmm156
1楼-- · 2019-07-15 02:30
RTC日期需要备份  在单片机复位后读出备份日期
UserMen
2楼-- · 2019-07-15 05:11
我现在也遇到了这样的问题,开机后显示2000年01月01日
csw_ying
3楼-- · 2019-07-15 10:07
在CUBE里设置备份,调用
陈囝囝100
4楼-- · 2019-07-15 11:18
 精彩回答 2  元偷偷看……
leilijiao
5楼-- · 2019-07-15 14:33
楼主,请问你的问题有解决吗?可否分享下,谢谢!
jerry181855
6楼-- · 2019-07-15 15:53
关注一下,看大神解答

一周热门 更多>