From ce346d798bdde941021cf631f275dfd48ad8b75e Mon Sep 17 00:00:00 2001 From: Eziotao Date: Mon, 3 Apr 2023 13:12:48 +0800 Subject: [PATCH] modify the sampling rate to increase the actual baud rate(drv_usart.c/drv_usart_v2.c) --- bsp/stm32/libraries/HAL_Drivers/drv_usart.c | 4 ++++ bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_usart.c b/bsp/stm32/libraries/HAL_Drivers/drv_usart.c index 6569872ef8..13001b4bc0 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_usart.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_usart.c @@ -108,7 +108,11 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c uart->handle.Instance = uart->config->Instance; uart->handle.Init.BaudRate = cfg->baud_rate; uart->handle.Init.Mode = UART_MODE_TX_RX; +#ifdef USART_CR1_OVER8 + uart->handle.Init.OverSampling = cfg->baud_rate > 5000000 ? UART_OVERSAMPLING_8 : UART_OVERSAMPLING_16; +#else uart->handle.Init.OverSampling = UART_OVERSAMPLING_16; +#endif /* USART_CR1_OVER8 */ switch (cfg->flowcontrol) { diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c b/bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c index 486a338545..9da522cb3f 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_usart_v2.c @@ -116,11 +116,14 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c RT_ASSERT(cfg != RT_NULL); uart = rt_container_of(serial, struct stm32_uart, serial); - uart->handle.Instance = uart->config->Instance; uart->handle.Init.BaudRate = cfg->baud_rate; uart->handle.Init.Mode = UART_MODE_TX_RX; +#ifdef USART_CR1_OVER8 + uart->handle.Init.OverSampling = cfg->baud_rate > 5000000 ? UART_OVERSAMPLING_8 : UART_OVERSAMPLING_16; +#else uart->handle.Init.OverSampling = UART_OVERSAMPLING_16; +#endif /* USART_CR1_OVER8 */ switch (cfg->data_bits) {