diff --git a/boards/nucleo-l053/Makefile.features b/boards/nucleo-l053/Makefile.features index 682b380690f88781cb0409a606d9f70c47f7f1b7..58200e3051056f4f3bafecd7c0d5ac3b2ec98cc7 100644 --- a/boards/nucleo-l053/Makefile.features +++ b/boards/nucleo-l053/Makefile.features @@ -3,6 +3,7 @@ FEATURES_PROVIDED += periph_cpuid FEATURES_PROVIDED += periph_gpio FEATURES_PROVIDED += periph_hwrng FEATURES_PROVIDED += periph_pwm +FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart diff --git a/boards/nucleo-l053/include/periph_conf.h b/boards/nucleo-l053/include/periph_conf.h index 702e1916bebdc52367df7675627defd6b158de27..2e47c8a218d2afc8b520fb0258c79e40c11eefeb 100644 --- a/boards/nucleo-l053/include/periph_conf.h +++ b/boards/nucleo-l053/include/periph_conf.h @@ -182,7 +182,7 @@ static const spi_conf_t spi_config[] = { * @name RTC configuration * @{ */ -#define RTC_NUMOF (0U) +#define RTC_NUMOF (1U) /** @} */ #ifdef __cplusplus diff --git a/boards/nucleo-l073/Makefile.features b/boards/nucleo-l073/Makefile.features index 682b380690f88781cb0409a606d9f70c47f7f1b7..58200e3051056f4f3bafecd7c0d5ac3b2ec98cc7 100644 --- a/boards/nucleo-l073/Makefile.features +++ b/boards/nucleo-l073/Makefile.features @@ -3,6 +3,7 @@ FEATURES_PROVIDED += periph_cpuid FEATURES_PROVIDED += periph_gpio FEATURES_PROVIDED += periph_hwrng FEATURES_PROVIDED += periph_pwm +FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart diff --git a/boards/nucleo-l073/include/periph_conf.h b/boards/nucleo-l073/include/periph_conf.h index e14442e1d0b561f4d3f0ff8e158dce260575eebb..f96223983ad9889ea0b147e4dd1446b3d3ca8455 100644 --- a/boards/nucleo-l073/include/periph_conf.h +++ b/boards/nucleo-l073/include/periph_conf.h @@ -182,7 +182,7 @@ static const spi_conf_t spi_config[] = { * @name RTC configuration * @{ */ -#define RTC_NUMOF (0U) +#define RTC_NUMOF (1U) /** @} */ #ifdef __cplusplus diff --git a/boards/nucleo32-l031/Makefile.features b/boards/nucleo32-l031/Makefile.features index 5a03b928bda269f0c18e4ff5ccd5735c2e15cc6a..f2ce7419b6131dd8aab27602cac652d54245f209 100644 --- a/boards/nucleo32-l031/Makefile.features +++ b/boards/nucleo32-l031/Makefile.features @@ -2,6 +2,7 @@ FEATURES_PROVIDED += periph_cpuid FEATURES_PROVIDED += periph_gpio FEATURES_PROVIDED += periph_pwm +FEATURES_PROVIDED += periph_rtc FEATURES_PROVIDED += periph_spi FEATURES_PROVIDED += periph_timer FEATURES_PROVIDED += periph_uart diff --git a/boards/nucleo32-l031/include/periph_conf.h b/boards/nucleo32-l031/include/periph_conf.h index 3559af3a52841a4f2b56710373e3b8db761dda69..720b91f2c72cab1ddacc8e2c3dc9ade1a46b9091 100644 --- a/boards/nucleo32-l031/include/periph_conf.h +++ b/boards/nucleo32-l031/include/periph_conf.h @@ -167,7 +167,7 @@ static const spi_conf_t spi_config[] = { * @name RTC configuration * @{ */ -#define RTC_NUMOF (0U) +#define RTC_NUMOF (1U) /** @} */ #ifdef __cplusplus diff --git a/cpu/stm32_common/periph/rtc.c b/cpu/stm32_common/periph/rtc.c index ce81dd2231d4646a5c1eeed8d6635a27a4a1e366..195354bad526f3f7eb0c4cb02f05dca14c897f92 100644 --- a/cpu/stm32_common/periph/rtc.c +++ b/cpu/stm32_common/periph/rtc.c @@ -27,7 +27,8 @@ #if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F2) || \ defined(CPU_FAM_STM32F3) || defined(CPU_FAM_STM32F4) || \ - defined(CPU_FAM_STM32F7) || defined(CPU_FAM_STM32L1) + defined(CPU_FAM_STM32F7) || defined(CPU_FAM_STM32L0) || \ + defined(CPU_FAM_STM32L1) /* guard file in case no RTC device was specified */ #if RTC_NUMOF @@ -65,7 +66,7 @@ void rtc_init(void) PWR->CR |= PWR_CR_DBP; #endif -#if defined(CPU_FAM_STM32L1) +#if defined(CPU_FAM_STM32L1) || defined(CPU_FAM_STM32L0) if (!(RCC->CSR & RCC_CSR_RTCEN)) { #else if (!(RCC->BDCR & RCC_BDCR_RTCEN)) { @@ -192,9 +193,15 @@ int rtc_set_alarm(struct tm *time, rtc_alarm_cb_t cb, void *arg) /* Enable RTC write protection */ RTC->WPR = 0xFF; +#if defined(CPU_FAM_STM32L0) + EXTI->IMR |= EXTI_IMR_IM17; +#else EXTI->IMR |= EXTI_IMR_MR17; +#endif + EXTI->RTSR |= EXTI_RTSR_TR17; -#if defined(CPU_FAM_STM32F0) + +#if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32L0) NVIC_SetPriority(RTC_IRQn, 10); NVIC_EnableIRQ(RTC_IRQn); #else @@ -235,7 +242,7 @@ void rtc_clear_alarm(void) void rtc_poweron(void) { -#if defined(CPU_FAM_STM32L1) +#if defined(CPU_FAM_STM32L1) || defined(CPU_FAM_STM32L0) /* Reset RTC domain */ RCC->CSR |= RCC_CSR_RTCRST; RCC->CSR &= ~(RCC_CSR_RTCRST); @@ -274,7 +281,7 @@ void rtc_poweron(void) void rtc_poweroff(void) { -#if defined(CPU_FAM_STM32L1) +#if defined(CPU_FAM_STM32L1) || defined(CPU_FAM_STM32L0) /* Reset RTC domain */ RCC->CSR |= RCC_CSR_RTCRST; RCC->CSR &= ~(RCC_CSR_RTCRST); @@ -293,7 +300,7 @@ void rtc_poweroff(void) #endif } -#if defined(CPU_FAM_STM32F0) +#if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32L0) void isr_rtc(void) #else void isr_rtc_alarm(void) @@ -331,4 +338,5 @@ static uint8_t byte2bcd(uint8_t value) #endif /* defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F2) || \ defined(CPU_FAM_STM32F3) || defined(CPU_FAM_STM32F4) || \ - defined(CPU_FAM_STM32F7) || defined(CPU_FAM_STM32L1) */ + defined(CPU_FAM_STM32F7) || defined(CPU_FAM_STM32L0) || \ + defined(CPU_FAM_STM32L1) */