OpenEdv-开源电子网

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

STM32L011F4P6 RTC时间修改复位问题

[复制链接]

15

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2017-7-1
在线时间
46 小时
发表于 2019-7-29 16:59:18 | 显示全部楼层 |阅读模式
20金钱
用STM32CubeMx生成的工程
RTC初始化,用的是片内37KHz的时钟,开了停止模式时钟闹钟唤醒

  1. /* RTC init function */
  2. void MX_RTC_Init(void)
  3. {
  4.     RTC_TimeTypeDef sTime = {0};
  5.     RTC_DateTypeDef sDate = {0};
  6.     RTC_AlarmTypeDef sAlarm = {0};

  7.     /** Initialize RTC Only
  8.     */
  9.     hrtc.Instance = RTC;
  10.     hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  11.     hrtc.Init.AsynchPrediv = 99;  // 127;
  12.     hrtc.Init.SynchPrediv = 366;  // 255;
  13.     hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  14.     hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  15.     hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  16.     hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  17.     if (HAL_RTC_Init(&hrtc) != HAL_OK)
  18.     {
  19.         Error_Handler();
  20.     }

  21.     /* USER CODE BEGIN Check_RTC_BKUP */

  22.     /* USER CODE END Check_RTC_BKUP */

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

  38.     if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  39.     {
  40.         Error_Handler();
  41.     }
  42.     /** Enable the Alarm A
  43.     */
  44.     sAlarm.AlarmTime.Hours = 0;
  45.     sAlarm.AlarmTime.Minutes = 0;
  46.     sAlarm.AlarmTime.Seconds = 10;
  47.     sAlarm.AlarmTime.SubSeconds = 0;
  48.     sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  49.     sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
  50.     sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY|RTC_ALARMMASK_HOURS
  51.                        |RTC_ALARMMASK_MINUTES;
  52.     sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
  53.     sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
  54.     sAlarm.AlarmDateWeekDay = 1;
  55.     sAlarm.Alarm = RTC_ALARM_A;
  56.     if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN) != HAL_OK)
  57.     {
  58.         Error_Handler();
  59.     }

  60. }
复制代码



用获取到的时间修改系统RTC时钟
  1. sTime.Hours = gtime.Hours;
  2.     sTime.Minutes = gtime.Minutes;
  3.     sTime.Seconds = gtime.Seconds;
  4.     sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  5.     sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  6.     if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  7.     {
  8.         Error_Handler();
  9.     }
复制代码


但改完之后把时间打印出来,又变成了00:00:00

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-7-30 02:31:53 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 17:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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