|
15 | 15 | #include "uart.h" |
16 | 16 | #include "Arduino.h" |
17 | 17 | #include "PinAF_STM32F1.h" |
| 18 | +#include "stm32yyxx_ll_rcc.h" |
18 | 19 |
|
19 | 20 | #ifdef __cplusplus |
20 | 21 | extern "C" { |
@@ -457,28 +458,30 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par |
457 | 458 | if (baudrate <= 9600) { |
458 | 459 | /* Enable the clock if not already set by user */ |
459 | 460 | enableClock(LSE_CLOCK); |
460 | | - if (obj->uart == LPUART1) { |
461 | | - __HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_LSE); |
462 | | - } |
| 461 | + if (LL_RCC_LSE_IsReady()) { |
| 462 | + if (obj->uart == LPUART1) { |
| 463 | + __HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_LSE); |
| 464 | + } |
463 | 465 | #if defined(LPUART2_BASE) |
464 | | - if (obj->uart == LPUART2) { |
465 | | - __HAL_RCC_LPUART2_CONFIG(RCC_LPUART2CLKSOURCE_LSE); |
466 | | - } |
| 466 | + if (obj->uart == LPUART2) { |
| 467 | + __HAL_RCC_LPUART2_CONFIG(RCC_LPUART2CLKSOURCE_LSE); |
| 468 | + } |
467 | 469 | #endif |
468 | 470 | #if defined(LPUART3_BASE) |
469 | | - if (obj->uart == LPUART3) { |
470 | | - __HAL_RCC_LPUART3_CONFIG(RCC_LPUART3CLKSOURCE_LSE); |
471 | | - } |
| 471 | + if (obj->uart == LPUART3) { |
| 472 | + __HAL_RCC_LPUART3_CONFIG(RCC_LPUART3CLKSOURCE_LSE); |
| 473 | + } |
472 | 474 | #endif |
473 | | - if ((uart_rx == NP) && (uart_rx_swap == NP)) { |
474 | | - if (HAL_HalfDuplex_Init(huart) == HAL_OK) { |
| 475 | + if ((uart_rx == NP) && (uart_rx_swap == NP)) { |
| 476 | + if (HAL_HalfDuplex_Init(huart) == HAL_OK) { |
| 477 | + return; |
| 478 | + } |
| 479 | + } else if (HAL_UART_Init(huart) == HAL_OK) { |
475 | 480 | return; |
476 | 481 | } |
477 | | - } else if (HAL_UART_Init(huart) == HAL_OK) { |
478 | | - return; |
479 | 482 | } |
480 | 483 | } |
481 | | - if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY)) { |
| 484 | + if (LL_RCC_HSI_IsReady()) { |
482 | 485 | if (obj->uart == LPUART1) { |
483 | 486 | __HAL_RCC_LPUART1_CONFIG(RCC_LPUART1CLKSOURCE_HSI); |
484 | 487 | } |
|
0 commit comments