summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--stmhal/rtc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/stmhal/rtc.c b/stmhal/rtc.c
index 6bed3d1e62..1d349a6e90 100644
--- a/stmhal/rtc.c
+++ b/stmhal/rtc.c
@@ -178,6 +178,17 @@ void rtc_init(void) {
RTCHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
RTCHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
+ // if LTE enabled & ready --> no need to (re-)init RTC
+ if ((RCC->BDCR & (RCC_BDCR_LSEON | RCC_BDCR_LSERDY)) == (RCC_BDCR_LSEON | RCC_BDCR_LSERDY)) {
+ // remove Backup Domain write protection
+ PWR->CR |= PWR_CR_DBP;
+ // Clear source Reset Flag
+ __HAL_RCC_CLEAR_RESET_FLAGS();
+ // provide some status information
+ rtc_info |= 0x40000 | (RCC->BDCR & 7) | (RCC->CSR & 3) << 8;
+ return;
+ }
+
mp_uint_t tick = HAL_GetTick();
if (HAL_RTC_Init(&RTCHandle) != HAL_OK) {