硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6883|回复: 3
收起左侧

[有问必答] HAL库的RTC,时间在走动,可是日期不变化怎么办?

[复制链接]

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2020-9-10 10:06:58 | 显示全部楼层 |阅读模式
使用cubemx配置的。 时间是正常走动的,可惜日期就是不变化。
  1. RTC_HandleTypeDef hrtc;

  2. /* RTC init function */
  3. void MX_RTC_Init(void)
  4. {
  5.   RTC_TimeTypeDef sTime = {0};
  6.   RTC_DateTypeDef sDate = {0};
  7.   /** Initialize RTC Only
  8.   */
  9.   hrtc.Instance = RTC;
  10.   hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  11.   hrtc.Init.AsynchPrediv = 127;
  12.   hrtc.Init.SynchPrediv = 255;
  13.   hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  14.   hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  15.   hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  16.   if (HAL_RTC_Init(&hrtc) != HAL_OK)
  17.   {
  18.     Error_Handler();
  19.   }
  20. /* USER CODE BEGIN Check_RTC_BKUP */
  21.   HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
  22.   if(sDate.Year!=0) return; //如果已经初始化过了,就不用再设定时间了。2020-9-4
  23.   /* USER CODE END Check_RTC_BKUP */

  24.   /** Initialize RTC and set the Time and Date
  25.   */
  26.   sTime.Hours = 12;
  27.   sTime.Minutes = 0;
  28.   sTime.Seconds = 0;
  29.   sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  30.   sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  31.   if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  32.   {
  33.     Error_Handler();
  34.   }
  35.   sDate.WeekDay = RTC_WEEKDAY_MONDAY;
  36.   sDate.Month = RTC_MONTH_JANUARY;
  37.   sDate.Date = 2;
  38.   sDate.Year = 20;

  39.   if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  40.   {
  41.     Error_Handler();
  42.   }
  43.   /** Enable Calibrartion
  44.   */
  45.   if (HAL_RTCEx_SetCalibrationOutPut(&hrtc, RTC_CALIBOUTPUT_512HZ) != HAL_OK)
  46.   {
  47.     Error_Handler();
  48.   }
  49. }

  50. void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
  51. {

  52.   if(rtcHandle->Instance==RTC)
  53.   {
  54.   /* USER CODE BEGIN RTC_MspInit 0 */

  55.   /* USER CODE END RTC_MspInit 0 */
  56.     /* RTC clock enable */
  57.     __HAL_RCC_RTC_ENABLE();
  58.   /* USER CODE BEGIN RTC_MspInit 1 */

  59.   /* USER CODE END RTC_MspInit 1 */
  60.   }
  61. }
复制代码


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-9-10 10:11:18 | 显示全部楼层
这种问题,之前标准库的时候就遇到过一次,我之前是日期配置有误导致的,比如2月整了个31号
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
 楼主| 发表于 2020-9-10 10:35:44 | 显示全部楼层
eric2013 发表于 2020-9-10 10:11
这种问题,之前标准库的时候就遇到过一次,我之前是日期配置有误导致的,比如2月整了个31号

我配置的是20年1月2号。 难道是此日子不是“星期一”?? 造成冲突?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-9-10 11:05:54 | 显示全部楼层
caicaptain2 发表于 2020-9-10 10:35
我配置的是20年1月2号。 难道是此日子不是“星期一”?? 造成冲突?

对,这个星期也要对应上,否则就是bug。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 16:49 , Processed in 0.035902 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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