diff --git a/hal_st/stm32fxxx/UartStmDma.cpp b/hal_st/stm32fxxx/UartStmDma.cpp index f743046a..acf0306f 100644 --- a/hal_st/stm32fxxx/UartStmDma.cpp +++ b/hal_st/stm32fxxx/UartStmDma.cpp @@ -36,9 +36,9 @@ namespace hal uartHandle.Instance = peripheralUart[uartIndex]; uartHandle.Init.BaudRate = config.baudrate; - uartHandle.Init.WordLength = USART_WORDLENGTH_8B; + uartHandle.Init.WordLength = config.parity == USART_PARITY_NONE ? USART_WORDLENGTH_8B : USART_WORDLENGTH_9B; uartHandle.Init.StopBits = USART_STOPBITS_1; - uartHandle.Init.Parity = USART_PARITY_NONE; + uartHandle.Init.Parity = config.parity; uartHandle.Init.Mode = USART_MODE_TX_RX; uartHandle.Init.HwFlowCtl = config.hwFlowControl; #if defined(STM32F0) || defined(STM32F3) || defined(STM32F7) @@ -73,9 +73,9 @@ namespace hal uartHandle.Instance = peripheralUart[uartIndex]; uartHandle.Init.BaudRate = config.baudrate; - uartHandle.Init.WordLength = USART_WORDLENGTH_8B; + uartHandle.Init.WordLength = config.parity == USART_PARITY_NONE ? USART_WORDLENGTH_8B : USART_WORDLENGTH_9B; uartHandle.Init.StopBits = USART_STOPBITS_1; - uartHandle.Init.Parity = USART_PARITY_NONE; + uartHandle.Init.Parity = config.parity; uartHandle.Init.Mode = USART_MODE_TX_RX; uartHandle.Init.HwFlowCtl = config.hwFlowControl; #if defined(STM32F0) || defined(STM32F3) || defined(STM32F7) diff --git a/hal_st/stm32fxxx/UartStmDma.hpp b/hal_st/stm32fxxx/UartStmDma.hpp index 3625e1f6..a1b3c190 100644 --- a/hal_st/stm32fxxx/UartStmDma.hpp +++ b/hal_st/stm32fxxx/UartStmDma.hpp @@ -19,6 +19,7 @@ namespace hal uint32_t baudrate = 115200; uint32_t hwFlowControl = UART_HWCONTROL_NONE; + uint32_t parity = USART_PARITY_NONE; infra::Optional dmaChannelTx; infra::Optional priority; };