@@ -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