Răsfoiți Sursa

[bsp][stm32]添加 uart6 的支持

guozhanxin 6 ani în urmă
părinte
comite
6013aafb6b

+ 6 - 0
bsp/stm32/libraries/HAL_Drivers/config/f4/dma_config.h

@@ -123,6 +123,12 @@ extern "C" {
 #define SPI4_TX_DMA_INSTANCE             DMA2_Stream1
 #define SPI4_TX_DMA_CHANNEL              DMA_CHANNEL_4
 #define SPI4_TX_DMA_IRQ                  DMA2_Stream1_IRQn
+#elif defined(BSP_UART6_RX_USING_DMA) && !defined(UART6_RX_DMA_INSTANCE)
+#define UART6_DMA_RX_IRQHandler          DMA2_Stream1_IRQHandler
+#define UART6_RX_DMA_RCC                 RCC_AHB1ENR_DMA2EN
+#define UART6_RX_DMA_INSTANCE            DMA2_Stream1
+#define UART6_RX_DMA_CHANNEL             DMA_CHANNEL_5
+#define UART6_RX_DMA_IRQ                 DMA2_Stream1_IRQn
 #endif
 
 /* DMA2 stream2 */

+ 43 - 20
bsp/stm32/libraries/HAL_Drivers/config/f4/uart_config.h

@@ -33,10 +33,10 @@ extern "C" {
 #ifndef UART1_DMA_CONFIG
 #define UART1_DMA_CONFIG                                            \
     {                                                               \
-        .Instance = UART1_RX_DMA_INSTANCE,                         \
-        .channel = UART1_RX_DMA_CHANNEL,                           \
-        .dma_rcc = UART1_RX_DMA_RCC,                               \
-        .dma_irq = UART1_RX_DMA_IRQ,                               \
+        .Instance = UART1_RX_DMA_INSTANCE,                          \
+        .channel = UART1_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART1_RX_DMA_RCC,                                \
+        .dma_irq = UART1_RX_DMA_IRQ,                                \
     }
 #endif /* UART1_DMA_CONFIG */
 #endif /* BSP_UART1_RX_USING_DMA */
@@ -56,10 +56,10 @@ extern "C" {
 #ifndef UART2_DMA_CONFIG
 #define UART2_DMA_CONFIG                                            \
     {                                                               \
-        .Instance = UART2_RX_DMA_INSTANCE,                         \
-        .channel = UART2_RX_DMA_CHANNEL,                           \
-        .dma_rcc = UART2_RX_DMA_RCC,                               \
-        .dma_irq = UART2_RX_DMA_IRQ,                               \
+        .Instance = UART2_RX_DMA_INSTANCE,                          \
+        .channel = UART2_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART2_RX_DMA_RCC,                                \
+        .dma_irq = UART2_RX_DMA_IRQ,                                \
     }
 #endif /* UART2_DMA_CONFIG */
 #endif /* BSP_UART2_RX_USING_DMA */
@@ -79,10 +79,10 @@ extern "C" {
 #ifndef UART3_DMA_CONFIG
 #define UART3_DMA_CONFIG                                            \
     {                                                               \
-        .Instance = UART3_RX_DMA_INSTANCE,                         \
-        .channel = UART3_RX_DMA_CHANNEL,                           \
-        .dma_rcc = UART3_RX_DMA_RCC,                               \
-        .dma_irq = UART3_RX_DMA_IRQ,                               \
+        .Instance = UART3_RX_DMA_INSTANCE,                          \
+        .channel = UART3_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART3_RX_DMA_RCC,                                \
+        .dma_irq = UART3_RX_DMA_IRQ,                                \
     }
 #endif /* UART3_DMA_CONFIG */
 #endif /* BSP_UART3_RX_USING_DMA */
@@ -102,10 +102,10 @@ extern "C" {
 #ifndef UART4_DMA_CONFIG
 #define UART4_DMA_CONFIG                                            \
     {                                                               \
-        .Instance = UART4_RX_DMA_INSTANCE,                         \
-        .channel = UART4_RX_DMA_CHANNEL,                           \
-        .dma_rcc = UART4_RX_DMA_RCC,                               \
-        .dma_irq = UART4_RX_DMA_IRQ,                               \
+        .Instance = UART4_RX_DMA_INSTANCE,                          \
+        .channel = UART4_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART4_RX_DMA_RCC,                                \
+        .dma_irq = UART4_RX_DMA_IRQ,                                \
     }
 #endif /* UART4_DMA_CONFIG */
 #endif /* BSP_UART4_RX_USING_DMA */
@@ -125,14 +125,37 @@ extern "C" {
 #ifndef UART5_DMA_CONFIG
 #define UART5_DMA_CONFIG                                            \
     {                                                               \
-        .Instance = UART5_RX_DMA_INSTANCE,                         \
-        .channel = UART5_RX_DMA_CHANNEL,                           \
-        .dma_rcc = UART5_RX_DMA_RCC,                               \
-        .dma_irq = UART5_RX_DMA_IRQ,                               \
+        .Instance = UART5_RX_DMA_INSTANCE,                          \
+        .channel = UART5_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART5_RX_DMA_RCC,                                \
+        .dma_irq = UART5_RX_DMA_IRQ,                                \
     }
 #endif /* UART5_DMA_CONFIG */
 #endif /* BSP_UART5_RX_USING_DMA */
 
+#if defined(BSP_USING_UART6)
+#ifndef UART6_CONFIG
+#define UART6_CONFIG                                                \
+    {                                                               \
+        .name = "uart6",                                            \
+        .Instance = USART6,                                         \
+        .irq_type = USART6_IRQn,                                    \
+    }
+#endif /* UART6_CONFIG */
+#endif /* BSP_USING_UART6 */
+
+#if defined(BSP_UART6_RX_USING_DMA)
+#ifndef UART6_DMA_CONFIG
+#define UART6_DMA_CONFIG                                            \
+    {                                                               \
+        .Instance = UART6_RX_DMA_INSTANCE,                          \
+        .channel = UART6_RX_DMA_CHANNEL,                            \
+        .dma_rcc = UART6_RX_DMA_RCC,                                \
+        .dma_irq = UART6_RX_DMA_IRQ,                                \
+    }
+#endif /* UART6_DMA_CONFIG */
+#endif /* BSP_UART6_RX_USING_DMA */
+
 #ifdef __cplusplus
 }
 #endif

+ 36 - 0
bsp/stm32/libraries/HAL_Drivers/drv_usart.c

@@ -45,6 +45,9 @@ enum
 #ifdef BSP_USING_UART5
     UART5_INDEX,
 #endif
+#ifdef BSP_USING_UART6
+    UART6_INDEX,
+#endif
 #ifdef BSP_USING_LPUART1
     LPUART1_INDEX,
 #endif
@@ -67,6 +70,9 @@ static struct stm32_uart_config uart_config[] =
 #ifdef BSP_USING_UART5
         UART5_CONFIG,
 #endif
+#ifdef BSP_USING_UART6
+        UART6_CONFIG,
+#endif
 #ifdef BSP_USING_LPUART1
         LPUART1_CONFIG,
 #endif
@@ -431,6 +437,31 @@ void UART5_DMA_RX_IRQHandler(void)
 #endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART5_RX_USING_DMA) */
 #endif /* BSP_USING_UART5*/
 
+#if defined(BSP_USING_UART6)
+void USART6_IRQHandler(void)
+{
+    /* enter interrupt */
+    rt_interrupt_enter();
+
+    uart_isr(&(uart_obj[UART6_INDEX].serial));
+    
+    /* leave interrupt */
+    rt_interrupt_leave();
+}
+#if defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_RX_USING_DMA)
+void UART6_DMA_RX_IRQHandler(void)
+{
+    /* enter interrupt */
+    rt_interrupt_enter();
+
+    HAL_DMA_IRQHandler(&uart_obj[UART6_INDEX].dma.handle);
+
+    /* leave interrupt */
+    rt_interrupt_leave();
+}
+#endif /* defined(RT_SERIAL_USING_DMA) && defined(BSP_UART6_RX_USING_DMA) */
+#endif /* BSP_USING_UART6*/
+
 #if defined(BSP_USING_LPUART1)
 void LPUART1_IRQHandler(void)
 {
@@ -608,6 +639,11 @@ static void stm32_uart_get_dma_config(void)
     static struct dma_config uart5_dma_rx = UART5_DMA_CONFIG;
     uart_config[UART5_INDEX].dma_rx = &uart5_dma_rx;
 #endif
+#ifdef BSP_UART6_RX_USING_DMA
+    uart_obj[UART6_INDEX].uart_dma_flag = 1;
+    static struct dma_config uart6_dma_rx = UART6_DMA_CONFIG;
+    uart_config[UART6_INDEX].dma_rx = &uart6_dma_rx;
+#endif
 #ifdef BSP_LPUART1_RX_USING_DMA
     uart_obj[LPUART1_INDEX].uart_dma_flag = 1;
     static struct dma_config lpuart1_dma_rx = LPUART1_DMA_CONFIG;