|
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