diff --git a/os/hal/ports/STM32/LLD/RTCv2/rtc_lld.c b/os/hal/ports/STM32/LLD/RTCv2/rtc_lld.c index 940abef7e..51ee7c41c 100644 --- a/os/hal/ports/STM32/LLD/RTCv2/rtc_lld.c +++ b/os/hal/ports/STM32/LLD/RTCv2/rtc_lld.c @@ -392,7 +392,7 @@ void rtc_lld_get_time(RTCDriver *rtcp, RTCDateTime *timespec) { /* If the RTC is capable of sub-second counting then the value is normalized in milliseconds and added to the time.*/ #if STM32_RTC_HAS_SUBSECONDS - subs = (((ssr << 16) / STM32_RTC_PRESS_VALUE) * 1000) >> 16; + subs = (((STM32_RTC_PRESS_VALUE - 1U) - ssr) * 1000U) / STM32_RTC_PRESS_VALUE; #else subs = 0; #endif /* STM32_RTC_HAS_SUBSECONDS */ diff --git a/readme.txt b/readme.txt index 5682306cb..95881022e 100644 --- a/readme.txt +++ b/readme.txt @@ -75,6 +75,7 @@ *** 3.0.0p4 *** - HAL: New DAC driver implementation for STM32F4xx. +- HAL: Fixed STM32 RTC SSR Register Counts Down (bug #591). - HAL: Fixed STM32 RTC PRER Register not being set in init (bug #590). - HAL: Fixed STM32F334 does not have an EXT18 interrupt (bug #588). - HAL: Fixed STM32L1xx USB is missing disconnect/connect macros (bug #587).