// // Created by hu123456 on 2024/8/19. // #include "usart1_tx_dma.h" DMA_HandleTypeDef g_dma_handle; void dma_init(DMA_Stream_TypeDef *dma_stream_handle, uint32_t ch) { if ((uint32_t)dma_stream_handle > (uint32_t)DMA2) { __HAL_RCC_DMA2_CLK_ENABLE(); } else { __HAL_RCC_DMA1_CLK_ENABLE(); } __HAL_LINKDMA(&huart1,hdmatx, g_dma_handle); g_dma_handle.Instance = dma_stream_handle; g_dma_handle.Init.Request = ch; g_dma_handle.Init.Direction = DMA_MEMORY_TO_PERIPH; g_dma_handle.Init.PeriphInc = DMA_PINC_DISABLE; g_dma_handle.Init.MemInc = DMA_MINC_ENABLE; g_dma_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; g_dma_handle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; g_dma_handle.Init.Mode = DMA_NORMAL; g_dma_handle.Init.Priority = DMA_PRIORITY_MEDIUM; g_dma_handle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; g_dma_handle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; g_dma_handle.Init.MemBurst = DMA_MBURST_SINGLE; g_dma_handle.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_DeInit(&g_dma_handle); HAL_DMA_Init(&g_dma_handle); }