Skip to content

Commit b5fbaa2

Browse files
committed
【修改】之前因为修改造成的不兼容问题并添加 DMA 支持
1 parent bfb9fd7 commit b5fbaa2

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

bsp/stm32/libraries/HAL_Drivers/drv_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ extern "C" {
4848
#include "f3/uart_config.h"
4949
#include "f3/tim_config.h"
5050
#include "f3/pwm_config.h"
51+
#include "f3/dma_config.h"
5152
#elif defined(SOC_SERIES_STM32F4)
5253
#include "f4/dma_config.h"
5354
#include "f4/uart_config.h"

bsp/stm32/libraries/HAL_Drivers/drv_dma.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ struct dma_config {
3232
rt_uint32_t dma_rcc;
3333
IRQn_Type dma_irq;
3434

35-
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
35+
#if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)|| defined(SOC_SERIES_STM32F3)
3636
rt_uint32_t channel;
3737
#endif
3838

bsp/stm32/libraries/HAL_Drivers/drv_usart.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -369,13 +369,22 @@ static void uart_isr(struct rt_serial_device *serial)
369369
if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_PE) != RESET)
370370
{
371371
__HAL_UART_CLEAR_PEFLAG(&uart->handle);
372-
}
373-
#if !defined(SOC_SERIES_STM32F3)
374-
if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_LBD) != RESET)
372+
}
373+
#if !defined(SOC_SERIES_STM32L4) && !defined(SOC_SERIES_STM32WL) && !defined(SOC_SERIES_STM32F7) && !defined(SOC_SERIES_STM32F0) \
374+
&& !defined(SOC_SERIES_STM32L0) && !defined(SOC_SERIES_STM32G0) && !defined(SOC_SERIES_STM32H7) \
375+
&& !defined(SOC_SERIES_STM32G4) && !defined(SOC_SERIES_STM32MP1) && !defined(SOC_SERIES_STM32WB)
376+
#ifdef SOC_SERIES_STM32F3
377+
if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_LBDF) != RESET)
375378
{
376379
UART_INSTANCE_CLEAR_FUNCTION(&(uart->handle), UART_FLAG_LBDF);
377380
}
381+
#else
382+
if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_LBD) != RESET)
383+
{
384+
UART_INSTANCE_CLEAR_FUNCTION(&(uart->handle), UART_FLAG_LBD);
385+
}
378386
#endif
387+
#endif
379388
if (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_CTS) != RESET)
380389
{
381390
UART_INSTANCE_CLEAR_FUNCTION(&(uart->handle), UART_FLAG_CTS);
@@ -864,7 +873,7 @@ static void stm32_dma_config(struct rt_serial_device *serial, rt_ubase_t flag)
864873
{
865874
rt_uint32_t tmpreg = 0x00U;
866875
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) \
867-
|| defined(SOC_SERIES_STM32L0)
876+
|| defined(SOC_SERIES_STM32L0)|| defined(SOC_SERIES_STM32F3)
868877
/* enable DMA clock && Delay after an RCC peripheral clock enabling*/
869878
SET_BIT(RCC->AHBENR, dma_config->dma_rcc);
870879
tmpreg = READ_BIT(RCC->AHBENR, dma_config->dma_rcc);
@@ -898,7 +907,7 @@ static void stm32_dma_config(struct rt_serial_device *serial, rt_ubase_t flag)
898907
__HAL_LINKDMA(&(uart->handle), hdmatx, uart->dma_tx.handle);
899908
}
900909

901-
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32L0)
910+
#if defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32L0)|| defined(SOC_SERIES_STM32F3)
902911
DMA_Handle->Instance = dma_config->Instance;
903912
#elif defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
904913
DMA_Handle->Instance = dma_config->Instance;

bsp/stm32/stm32f302-st-nucleo/board/Kconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,17 @@ menu "On-chip Peripheral Drivers"
2626
config BSP_USING_UART2
2727
bool "Enable UART2"
2828
default y
29+
30+
config BSP_UART2_RX_USING_DMA
31+
bool "Enable UART2 RX DMA"
32+
depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
33+
default n
34+
35+
config BSP_UART2_TX_USING_DMA
36+
bool "Enable UART2 TX DMA"
37+
depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
38+
default n
39+
2940
endif
3041

3142
endmenu

0 commit comments

Comments
 (0)