Explorar o código

[drv_usart.c]修复stm32串口开启奇偶校验时字长设置错误

Sunwancn %!s(int64=4) %!d(string=hai) anos
pai
achega
e22f72293e
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      bsp/stm32/libraries/HAL_Drivers/drv_usart.c

+ 4 - 1
bsp/stm32/libraries/HAL_Drivers/drv_usart.c

@@ -112,7 +112,10 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c
     switch (cfg->data_bits)
     {
     case DATA_BITS_8:
-        uart->handle.Init.WordLength = UART_WORDLENGTH_8B;
+        if (cfg->parity == PARITY_ODD || cfg->parity == PARITY_EVEN)
+            uart->handle.Init.WordLength = UART_WORDLENGTH_9B;
+        else
+            uart->handle.Init.WordLength = UART_WORDLENGTH_8B;
         break;
     case DATA_BITS_9:
         uart->handle.Init.WordLength = UART_WORDLENGTH_9B;