void getFormattedRTCDateTime(string &dateTimeString); void RTC_CalendarConfig(void); void RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate); string formatDateTime(RTC_DateTypeDef inDate, RTC_TimeTypeDef inTime); void mcuRealTimeClock::getFormattedRTCDateTime(string &dateTimeString) { RTC_TimeTypeDef rtcTime; RTC_DateTypeDef rtcDate; char charArray[50] = { 0 }; HAL_RTC_GetTime(&RtcHandle, &rtcTime, RTC_FORMAT_BCD); HAL_RTC_GetDate(&RtcHandle, &rtcDate, RTC_FORMAT_BCD); sprintf(charArray, "%4d-%02d-%02dT%02d:%02d:%02dZ", 2000 + rtcDate.Year, rtcDate.Month, rtcDate.Date, rtcTime.Hours, rtcTime.Minutes, rtcTime.Seconds); dateTimeString.clear(); dateTimeString += charArray; cout << "getFormattedRTCDateTime: " << dateTimeString << endl; } void mcuRealTimeClock::RTC_CalendarShow(uint8_t *showtime, uint8_t *showdate) { RTC_DateTypeDef sdatestructureget; RTC_TimeTypeDef stimestructureget; /* Get the RTC current Time */ HAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BCD); /* Get the RTC current Date */ HAL_RTC_GetDate(&RtcHandle, &sdatestructureget, RTC_FORMAT_BCD); /* Display time Format : hh:mm:ss */ sprintf((char *)showtime, "%2d:%2d:%2d", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds); /* Display date Format : mm-dd-yy */ sprintf((char *)showdate, "%2d-%2d-%2d", sdatestructureget.Month, sdatestructureget.Date, 2000 + sdatestructureget.Year); } void mcuRealTimeClock::RTC_CalendarConfig(void) { RTC_DateTypeDef sdatestructure; RTC_TimeTypeDef stimestructure; /*##-1- Configure the Date #################################################*/ sdatestructure.Year = 0x00; sdatestructure.Month = RTC_MONTH_JANUARY; sdatestructure.Date = 0x01; sdatestructure.WeekDay = RTC_WEEKDAY_TUESDAY; if (HAL_RTC_SetDate(&RtcHandle, &sdatestructure, RTC_FORMAT_BCD) != HAL_OK) { /* Initialization Error */ cout << "Error_Handler();" << endl; } /*##-2- Configure the Time #################################################*/ stimestructure.Hours = 0x00; stimestructure.Minutes = 0x00; stimestructure.Seconds = 0x00; stimestructure.TimeFormat = RTC_HOURFORMAT_24; stimestructure.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; stimestructure.StoreOperation = RTC_STOREOPERATION_RESET; if (HAL_RTC_SetTime(&RtcHandle, &stimestructure, RTC_FORMAT_BCD) != HAL_OK) { /* Initialization Error */ cout << "Error_Handler();" << endl; } /*##-3- Writes a data in a RTC Backup data Register1 #######################*/ HAL_RTCEx_BKUPWrite(&RtcHandle, RTC_BKP_DR1, 0x32F2); }