From 2f733e6b45b7af80751c4bed6b580e246857cd1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=90=83=E6=B2=B9=E7=82=B8=E9=B8=A1?= <1425962791@qq.com> Date: Mon, 18 Aug 2025 14:13:14 +0800 Subject: [PATCH] add uart_tx dma --- Power_Pico/Core/Src/usart.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Power_Pico/Core/Src/usart.c b/Power_Pico/Core/Src/usart.c index 4992a14..45cda19 100644 --- a/Power_Pico/Core/Src/usart.c +++ b/Power_Pico/Core/Src/usart.c @@ -29,6 +29,7 @@ uint8_t uart_receive_str[USART_RX_BUFFER_SIZE + 1]; UART_HandleTypeDef huart6; DMA_HandleTypeDef hdma_usart6_rx; +DMA_HandleTypeDef hdma_usart6_tx; /* USART6 init function */ @@ -103,6 +104,24 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart6_rx); + /* USART6_TX Init */ + hdma_usart6_tx.Instance = DMA2_Stream6; + hdma_usart6_tx.Init.Channel = DMA_CHANNEL_5; + hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE; + hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_usart6_tx.Init.Mode = DMA_NORMAL; + hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW; + hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart6_tx); + /* USART6 interrupt Init */ HAL_NVIC_SetPriority(USART6_IRQn, 5, 0); HAL_NVIC_EnableIRQ(USART6_IRQn); @@ -131,6 +150,7 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) /* USART6 DMA DeInit */ HAL_DMA_DeInit(uartHandle->hdmarx); + HAL_DMA_DeInit(uartHandle->hdmatx); /* USART6 interrupt Deinit */ HAL_NVIC_DisableIRQ(USART6_IRQn);