just switching my toolchain host from Win10 to Debian i had an issue with HAL 6.0.1 and STM32F103 mcu. I used the actual toolchain GNU MCU Eclipse ARM Embedded GCC which surprised me with 64-bit time_t type.
The function call localtime_r failed.
I solved that with a small patch in hal_rtc_ldd.c.
Maybe there exists a better solution?
Ingo
hal_rtc_ldd.c
Code: Select all
static void rtc_decode(uint32_t tv_sec,
uint32_t tv_msec,
RTCDateTime *timespec) {
struct tm tim;
struct tm *t;
time_t tv64b; /* XXX patched ibrauns 07082018*/
/* If the conversion is successful the function returns a pointer
to the object the result was written into.*/
#if defined(__GNUC__) || defined(__CC_ARM)
tv64b = tv_sec; /* XXX patched ibrauns 07082018*/
t = localtime_r((time_t *)&(tv64b), &tim); /* XXX patched ibrauns 07082018
t = localtime_r((time_t *)&(tv_sec), &tim); */
osalDbgAssert(t != NULL, "conversion failed");
#else
t = localtime(&tv_sec);
memcpy(&tim, t, sizeof(struct tm));
#endif
rtcConvertStructTmToDateTime(&tim, tv_msec, timespec);
}