Skip to content

Commit 87d403e

Browse files
committed
fix: core: uart: add missing half duplex init
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent fa8bebd commit 87d403e

File tree

1 file changed

+20
-4
lines changed
  • libraries/SrcWrapper/src/stm32

1 file changed

+20
-4
lines changed

libraries/SrcWrapper/src/stm32/uart.c

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,11 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
334334
HAL_UARTEx_DisableStopMode(huart);
335335
}
336336
/* Trying default LPUART clock source */
337-
if (HAL_UART_Init(huart) == HAL_OK) {
337+
if (uart_rx == NP) {
338+
if (HAL_HalfDuplex_Init(huart) == HAL_OK) {
339+
return;
340+
}
341+
} else if (HAL_UART_Init(huart) == HAL_OK) {
338342
return;
339343
}
340344
/* Trying to change LPUART clock source */
@@ -350,7 +354,11 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
350354
__HAL_RCC_LPUART2_CONFIG(RCC_LPUART2CLKSOURCE_LSE);
351355
}
352356
#endif
353-
if (HAL_UART_Init(huart) == HAL_OK) {
357+
if (uart_rx == NP) {
358+
if (HAL_HalfDuplex_Init(huart) == HAL_OK) {
359+
return;
360+
}
361+
} else if (HAL_UART_Init(huart) == HAL_OK) {
354362
return;
355363
}
356364
}
@@ -363,7 +371,11 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
363371
__HAL_RCC_LPUART2_CONFIG(RCC_LPUART2CLKSOURCE_HSI);
364372
}
365373
#endif
366-
if (HAL_UART_Init(huart) == HAL_OK) {
374+
if (uart_rx == NP) {
375+
if (HAL_HalfDuplex_Init(huart) == HAL_OK) {
376+
return;
377+
}
378+
} else if (HAL_UART_Init(huart) == HAL_OK) {
367379
return;
368380
}
369381
}
@@ -376,7 +388,11 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
376388
__HAL_RCC_LPUART2_CONFIG(RCC_LPUART2CLKSOURCE_PCLK1);
377389
}
378390
#endif
379-
if (HAL_UART_Init(huart) == HAL_OK) {
391+
if (uart_rx == NP) {
392+
if (HAL_HalfDuplex_Init(huart) == HAL_OK) {
393+
return;
394+
}
395+
} else if (HAL_UART_Init(huart) == HAL_OK) {
380396
return;
381397
}
382398
if (obj->uart == LPUART1) {

0 commit comments

Comments
 (0)