@@ -490,7 +490,13 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
490
490
enableClock (LSE_CLOCK );
491
491
if (LL_RCC_LSE_IsReady ()) {
492
492
if (obj -> uart == LPUART1 ) {
493
+ #if defined(__HAL_RCC_LPUART1_CONFIG )
493
494
__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
494
500
}
495
501
#if defined(LPUART2_BASE )
496
502
if (obj -> uart == LPUART2 ) {
@@ -511,6 +517,7 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
511
517
}
512
518
}
513
519
}
520
+ #if defined(__HAL_RCC_LPUART1_CONFIG )
514
521
if (LL_RCC_HSI_IsReady ()) {
515
522
if (obj -> uart == LPUART1 ) {
516
523
__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
533
540
return true;
534
541
}
535
542
}
543
+ #endif /* __HAL_RCC_LPUART1_CONFIG */
536
544
if (obj -> uart == LPUART1 ) {
537
545
#if defined(RCC_LPUART1CLKSOURCE_CSI )
538
546
__HAL_RCC_LPUART1_CONFIG (RCC_LPUART1CLKSOURCE_CSI );
539
547
#elif defined(RCC_LPUART1CLKSOURCE_PCLK1 )
540
548
__HAL_RCC_LPUART1_CONFIG (RCC_LPUART1CLKSOURCE_PCLK1 );
541
549
#elif defined(RCC_LPUART1CLKSOURCE_PCLK3 )
542
550
__HAL_RCC_LPUART1_CONFIG (RCC_LPUART1CLKSOURCE_PCLK3 );
551
+ #elif defined(RCC_LPUART1_CLKSOURCE_16M )
552
+ __HAL_RCC_LPUART1_CLK_CONFIG (RCC_LPUART1_CLKSOURCE_16M );
543
553
#endif
544
554
}
545
555
#if defined(LPUART2_BASE )
@@ -756,17 +766,24 @@ void uart_config_lowpower(serial_t *obj)
756
766
if (obj == NULL ) {
757
767
return ;
758
768
}
759
- /* Ensure HSI clock is enable */
769
+ /* Ensure clock is enable */
770
+ #if defined(STM32WB0x )
771
+ enableClock (LSE_CLOCK );
772
+ #else
760
773
enableClock (HSI_CLOCK );
774
+ #endif
761
775
762
776
hsem_lock (CFG_HW_RCC_CRRCR_CCIPR_SEMID , HSEM_LOCK_DEFAULT_RETRY );
763
777
/* Configure HSI as source clock for low power wakeup clock */
764
778
switch (obj -> index ) {
765
779
#if defined(USART1_BASE )
766
780
case UART1_INDEX :
781
+ /* STM32WB0x direct clock CLK_16M */
782
+ #if defined(__HAL_RCC_GET_USART1_SOURCE )
767
783
if (__HAL_RCC_GET_USART1_SOURCE () != RCC_USART1CLKSOURCE_HSI ) {
768
784
__HAL_RCC_USART1_CONFIG (RCC_USART1CLKSOURCE_HSI );
769
785
}
786
+ #endif
770
787
break ;
771
788
#endif
772
789
#if defined(USART2_BASE ) && defined(__HAL_RCC_USART2_CONFIG )
@@ -797,14 +814,21 @@ void uart_config_lowpower(serial_t *obj)
797
814
}
798
815
break ;
799
816
#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 */
801
819
case LPUART1_INDEX :
820
+ #if defined(__HAL_RCC_LPUART1_CONFIG )
802
821
#ifdef __HAL_RCC_LPUART1_CLKAM_ENABLE
803
822
__HAL_RCC_LPUART1_CLKAM_ENABLE ();
804
823
#endif
805
824
if (__HAL_RCC_GET_LPUART1_SOURCE () != RCC_LPUART1CLKSOURCE_HSI ) {
806
825
__HAL_RCC_LPUART1_CONFIG (RCC_LPUART1CLKSOURCE_HSI );
807
826
}
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
808
832
break ;
809
833
#endif
810
834
#if defined(LPUART2_BASE ) && defined(__HAL_RCC_LPUART2_CONFIG )
0 commit comments