芯片: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;
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』