Skip to content

Commit d3b0ef6

Browse files
committed
chore(wb0x): (lp)u(s)art support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 7f07a85 commit d3b0ef6

File tree

1 file changed

+26
-2
lines changed
  • libraries/SrcWrapper/src/stm32

1 file changed

+26
-2
lines changed

libraries/SrcWrapper/src/stm32/uart.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,13 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
490490
enableClock(LSE_CLOCK);
491491
if (LL_RCC_LSE_IsReady()) {
492492
if (obj->uart == LPUART1) {
493+
#if defined(__HAL_RCC_LPUART1_CONFIG)
493494
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_LSE);
495+
#elif defined(__HAL_RCC_LPUART1_CLK_CONFIG)
496+
__HAL_RCC_LPUART1_CLK_CONFIG(RCC_LPUART1_CLKSOURCE_LSE);
497+
#else
498+
#error "LPUART1 clock source config not defined"
499+
#endif
494500
}
495501
#if defined(LPUART2_BASE)
496502
if (obj->uart == LPUART2) {
@@ -511,6 +517,7 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
511517
}
512518
}
513519
}
520+
#if defined(__HAL_RCC_LPUART1_CONFIG)
514521
if (LL_RCC_HSI_IsReady()) {
515522
if (obj->uart == LPUART1) {
516523
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_HSI);
@@ -533,13 +540,16 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
533540
return true;
534541
}
535542
}
543+
#endif /* __HAL_RCC_LPUART1_CONFIG */
536544
if (obj->uart == LPUART1) {
537545
#if defined(RCC_LPUART1CLKSOURCE_CSI)
538546
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_CSI);
539547
#elif defined(RCC_LPUART1CLKSOURCE_PCLK1)
540548
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_PCLK1);
541549
#elif defined(RCC_LPUART1CLKSOURCE_PCLK3)
542550
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_PCLK3);
551+
#elif defined(RCC_LPUART1_CLKSOURCE_16M)
552+
__HAL_RCC_LPUART1_CLK_CONFIG(RCC_LPUART1_CLKSOURCE_16M);
543553
#endif
544554
}
545555
#if defined(LPUART2_BASE)
@@ -756,17 +766,24 @@ void uart_config_lowpower(serial_t *obj)
756766
if (obj == NULL) {
757767
return;
758768
}
759-
/* Ensure HSI clock is enable */
769+
/* Ensure clock is enable */
770+
#if defined(STM32WB0x)
771+
enableClock(LSE_CLOCK);
772+
#else
760773
enableClock(HSI_CLOCK);
774+
#endif
761775

762776
hsem_lock(CFG_HW_RCC_CRRCR_CCIPR_SEMID, HSEM_LOCK_DEFAULT_RETRY);
763777
/* Configure HSI as source clock for low power wakeup clock */
764778
switch (obj->index) {
765779
#if defined(USART1_BASE)
766780
case UART1_INDEX:
781+
/* STM32WB0x direct clock CLK_16M */
782+
#if defined(__HAL_RCC_GET_USART1_SOURCE)
767783
if (__HAL_RCC_GET_USART1_SOURCE() != RCC_USART1CLKSOURCE_HSI) {
768784
__HAL_RCC_USART1_CONFIG(RCC_USART1CLKSOURCE_HSI);
769785
}
786+
#endif
770787
break;
771788
#endif
772789
#if defined(USART2_BASE) && defined(__HAL_RCC_USART2_CONFIG)
@@ -797,14 +814,21 @@ void uart_config_lowpower(serial_t *obj)
797814
}
798815
break;
799816
#endif
800-
#if defined(LPUART1_BASE) && defined(__HAL_RCC_LPUART1_CONFIG)
817+
#if defined(LPUART1_BASE) && (defined(__HAL_RCC_LPUART1_CONFIG) || defined(__HAL_RCC_LPUART1_CLK_CONFIG))
818+
/* LPUART1 is used for low power wakeup */
801819
case LPUART1_INDEX:
820+
#if defined(__HAL_RCC_LPUART1_CONFIG)
802821
#ifdef __HAL_RCC_LPUART1_CLKAM_ENABLE
803822
__HAL_RCC_LPUART1_CLKAM_ENABLE();
804823
#endif
805824
if (__HAL_RCC_GET_LPUART1_SOURCE() != RCC_LPUART1CLKSOURCE_HSI) {
806825
__HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_HSI);
807826
}
827+
#elif defined(__HAL_RCC_LPUART1_CLK_CONFIG)
828+
if (__HAL_RCC_GET_LPUART1_CLK_CONFIG() != RCC_LPUART1_CLKSOURCE_LSE) {
829+
__HAL_RCC_LPUART1_CLK_CONFIG(RCC_LPUART1_CLKSOURCE_LSE);
830+
}
831+
#endif
808832
break;
809833
#endif
810834
#if defined(LPUART2_BASE) && defined(__HAL_RCC_LPUART2_CONFIG)

0 commit comments

Comments
 (0)