Skip to content

Commit a2793ad

Browse files
committed
fix: in configForLowPower(), begin() should be call unconditionnally
The fact RTC is already configured or not, is handled by begin() itself. Fixes stm32duino/STM32LowPower#71 Signed-off-by: Alexandre Bourdiol <alexandre.bourdiol@st.com>
1 parent b468393 commit a2793ad

File tree

1 file changed

+28
-31
lines changed

1 file changed

+28
-31
lines changed

src/STM32RTC.cpp

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -926,39 +926,36 @@ void STM32RTC::configForLowPower(Source_Clock source)
926926
#ifdef __HAL_RCC_RTCAPB_CLKAM_ENABLE
927927
__HAL_RCC_RTCAPB_CLKAM_ENABLE();
928928
#endif
929-
if (!RTC_IsConfigured()) {
929+
930+
begin();
931+
932+
if (_clockSource != source) {
933+
// Save current config
934+
AM_PM period, alarmPeriod = _alarmPeriod;
935+
uint32_t subSeconds;
936+
uint8_t seconds, minutes, hours, weekDay, day, month, years;
937+
uint8_t alarmSeconds, alarmMinutes, alarmHours, alarmDay;
938+
Alarm_Match alarmMatch = _alarmMatch;
939+
940+
alarmDay = _alarmDay;
941+
alarmHours = _alarmHours;
942+
alarmMinutes = _alarmMinutes;
943+
alarmSeconds = _alarmSeconds;
944+
945+
getDate(&weekDay, &day, &month, &years);
946+
getTime(&seconds, &minutes, &hours, &subSeconds, &period);
947+
948+
end();
930949
_clockSource = source;
931950
// Enable RTC
932-
begin();
933-
} else {
934-
if (_clockSource != source) {
935-
// Save current config
936-
AM_PM period, alarmPeriod = _alarmPeriod;
937-
uint32_t subSeconds;
938-
uint8_t seconds, minutes, hours, weekDay, day, month, years;
939-
uint8_t alarmSeconds, alarmMinutes, alarmHours, alarmDay;
940-
Alarm_Match alarmMatch = _alarmMatch;
941-
942-
alarmDay = _alarmDay;
943-
alarmHours = _alarmHours;
944-
alarmMinutes = _alarmMinutes;
945-
alarmSeconds = _alarmSeconds;
946-
947-
getDate(&weekDay, &day, &month, &years);
948-
getTime(&seconds, &minutes, &hours, &subSeconds, &period);
949-
950-
end();
951-
_clockSource = source;
952-
// Enable RTC
953-
begin(period);
954-
// Restore config
955-
setTime(seconds, minutes, hours, subSeconds, period);
956-
setDate(weekDay, day, month, years);
957-
setAlarmTime(alarmHours, alarmMinutes, alarmSeconds, alarmPeriod);
958-
setAlarmDay(alarmDay);
959-
if (RTC_IsAlarmSet()) {
960-
enableAlarm(alarmMatch);
961-
}
951+
begin(period);
952+
// Restore config
953+
setTime(seconds, minutes, hours, subSeconds, period);
954+
setDate(weekDay, day, month, years);
955+
setAlarmTime(alarmHours, alarmMinutes, alarmSeconds, alarmPeriod);
956+
setAlarmDay(alarmDay);
957+
if (RTC_IsAlarmSet()) {
958+
enableAlarm(alarmMatch);
962959
}
963960
}
964961
#endif

0 commit comments

Comments
 (0)