×
单片机 > 单片机程序设计 > 详情

RTC--日期必须重启才更新问题

发布时间:2020-09-03 发布时间:
|

芯片:STM32F030C8T6


问题:RTC设置时间,时间可正常设置,日期需要重启才能设置成功


相关代码:


/************************************************


函数名称 : RTC_GetDateTime


功    能 : 读取RTC日期时间(含日历、星期)


参    数 : RTC_DateTimeStructure -- RTC结构体


返 回 值 : 


*************************************************/


void RTC_GetDateTime(RTC_DateTimeTypeDef *RTC_DateTimeStructure)


{


  RTC_DateTypeDef RTC_DateStructure;


  RTC_TimeTypeDef RTC_TimeStructure;


 


  RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure);


  RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);


 


  RTC_DateTimeStructure->Year = RTC_DateStructure.RTC_Year;


  RTC_DateTimeStructure->Month = RTC_DateStructure.RTC_Month;


  RTC_DateTimeStructure->Date = RTC_DateStructure.RTC_Date;


  RTC_DateTimeStructure->Week = RTC_DateStructure.RTC_WeekDay;


  RTC_DateTimeStructure->Hour = RTC_TimeStructure.RTC_Hours;


  RTC_DateTimeStructure->Minute = RTC_TimeStructure.RTC_Minutes;


  RTC_DateTimeStructure->Second = RTC_TimeStructure.RTC_Seconds;


}


设置RTC、时间(时分秒)正常更新了,可是日期(年月日)却未更新、重启后日期才更新。


解决:


@note You must call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the values ,在HAL_RTC_GetDate


也就是说必须先 获取时间 再获取日期,才能正常更新时间。


 


更改后:


void RTC_GetDateTime(RTC_DateTimeTypeDef *RTC_DateTimeStructure)


{


  RTC_DateTypeDef RTC_DateStructure;


  RTC_TimeTypeDef RTC_TimeStructure;


 


  RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);


  RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure);


 


  RTC_DateTimeStructure->Year = RTC_DateStructure.RTC_Year;


  RTC_DateTimeStructure->Month = RTC_DateStructure.RTC_Month;


  RTC_DateTimeStructure->Date = RTC_DateStructure.RTC_Date;


  RTC_DateTimeStructure->Week = RTC_DateStructure.RTC_WeekDay;


  RTC_DateTimeStructure->Hour = RTC_TimeStructure.RTC_Hours;


  RTC_DateTimeStructure->Minute = RTC_TimeStructure.RTC_Minutes;


  RTC_DateTimeStructure->Second = RTC_TimeStructure.RTC_Seconds;


}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法