Skip to content

Commit 3885bc9

Browse files
authored
Merge pull request #6303 from DavePutz/issue_4452
Fix for issue #4452 - time.sleep on STM
2 parents 69605b5 + 289aaae commit 3885bc9

File tree

1 file changed

+5
-2
lines changed
  • ports/stm/peripherals

1 file changed

+5
-2
lines changed

ports/stm/peripherals/rtc.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ uint64_t stm32_peripherals_rtc_raw_ticks(uint8_t *subticks) {
8686
uint32_t time = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);
8787
uint32_t date = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);
8888
uint32_t ssr = (uint32_t)(RTC->SSR);
89-
while (ssr != first_ssr) {
89+
if (ssr != first_ssr) {
9090
first_ssr = ssr;
9191
time = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);
9292
date = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);
@@ -184,13 +184,16 @@ void stm32_peripherals_rtc_set_alarm(uint8_t alarm_idx, uint32_t ticks) {
184184

185185
alarm.AlarmTime.SubSeconds = rtc_clock_frequency - 1 -
186186
((raw_ticks % TICK_DIVISOR) * 32);
187+
if (alarm.AlarmTime.SubSeconds > rtc_clock_frequency) {
188+
alarm.AlarmTime.SubSeconds = alarm.AlarmTime.SubSeconds +
189+
rtc_clock_frequency;
190+
}
187191
alarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
188192
alarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_SET;
189193
// Masking here means that the bits are ignored so we set none of them.
190194
alarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
191195
alarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
192196
alarm.Alarm = (alarm_idx == PERIPHERALS_ALARM_A) ? RTC_ALARM_A : RTC_ALARM_B;
193-
194197
HAL_RTC_SetAlarm_IT(&hrtc, &alarm, RTC_FORMAT_BIN);
195198
HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
196199
alarmed_already[alarm_idx] = false;

0 commit comments

Comments
 (0)