diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c b/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c index 46d09dd16fdc7b53b5de43201be1ba45b2b74497..16ec84b0daaa5a638c312b477fa20248e1a6fea6 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_rtc.c @@ -65,21 +65,21 @@ static rt_err_t set_rtc_time_stamp(time_t time_stamp) { RTC_TimeTypeDef RTC_TimeStruct = {0}; RTC_DateTypeDef RTC_DateStruct = {0}; - struct tm *p_tm; + struct tm p_tm = {0}; - p_tm = gmtime(&time_stamp); - if (p_tm->tm_year < 100) + gmtime_r(&time_stamp, &p_tm); + if (p_tm.tm_year < 100) { return -RT_ERROR; } - RTC_TimeStruct.Seconds = p_tm->tm_sec ; - RTC_TimeStruct.Minutes = p_tm->tm_min ; - RTC_TimeStruct.Hours = p_tm->tm_hour; - RTC_DateStruct.Date = p_tm->tm_mday; - RTC_DateStruct.Month = p_tm->tm_mon + 1 ; - RTC_DateStruct.Year = p_tm->tm_year - 100; - RTC_DateStruct.WeekDay = p_tm->tm_wday + 1; + RTC_TimeStruct.Seconds = p_tm.tm_sec ; + RTC_TimeStruct.Minutes = p_tm.tm_min ; + RTC_TimeStruct.Hours = p_tm.tm_hour; + RTC_DateStruct.Date = p_tm.tm_mday; + RTC_DateStruct.Month = p_tm.tm_mon + 1 ; + RTC_DateStruct.Year = p_tm.tm_year - 100; + RTC_DateStruct.WeekDay = p_tm.tm_wday + 1; if (HAL_RTC_SetTime(&RTC_Handler, &RTC_TimeStruct, RTC_FORMAT_BIN) != HAL_OK) {