void TM_RTC_GetDateTime(TM_RTC_Time_t* data, TM_RTC_Format_t format) { uint32_t unix; /* Get time */ if (format == TM_RTC_Format_BIN) { RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct); } else { RTC_GetTime(RTC_Format_BCD, &RTC_TimeStruct); } data->hours = RTC_TimeStruct.RTC_Hours; data->minutes = RTC_TimeStruct.RTC_Minutes; data->seconds = RTC_TimeStruct.RTC_Seconds; /* Get date */ if (format == TM_RTC_Format_BIN) { RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct); } else { RTC_GetDate(RTC_Format_BCD, &RTC_DateStruct); } data->year = RTC_DateStruct.RTC_Year; data->month = RTC_DateStruct.RTC_Month; data->date = RTC_DateStruct.RTC_Date; data->day = RTC_DateStruct.RTC_WeekDay; /* Calculate unix offset */ unix = TM_RTC_GetUnixTimeStamp(data); data->unix = unix; }
TM_RTC_Result_t TM_RTC_GetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) { uint32_t unix; /* Get time */ if (format == TM_RTC_Format_BIN) { HAL_RTC_GetTime(&hRTC, &RTC_TimeStruct, RTC_FORMAT_BIN); } else { HAL_RTC_GetTime(&hRTC, &RTC_TimeStruct, RTC_FORMAT_BCD); } /* Format hours */ data->Hours = RTC_TimeStruct.Hours; data->Minutes = RTC_TimeStruct.Minutes; data->Seconds = RTC_TimeStruct.Seconds; /* Get subseconds */ data->Subseconds = RTC->SSR; /* Get date */ if (format == TM_RTC_Format_BIN) { HAL_RTC_GetDate(&hRTC, &RTC_DateStruct, RTC_FORMAT_BIN); } else { HAL_RTC_GetDate(&hRTC, &RTC_DateStruct, RTC_FORMAT_BCD); } /* Format date */ data->Year = RTC_DateStruct.Year; data->Month = RTC_DateStruct.Month; data->Day = RTC_DateStruct.Date; data->WeekDay = RTC_DateStruct.WeekDay; /* Calculate unix offset */ unix = TM_RTC_GetUnixTimeStamp(data); data->Unix = unix; /* Return OK */ return TM_RTC_Result_Ok; }