#pragma once #include #include #include "zsdk/zsdk.hpp" #include "zstm32/zstm32.hpp" namespace iflytop { class HalUtils { public: static void uartdmainit(UART_HandleTypeDef* uart, DMA_HandleTypeDef* txdma, uint32_t txdmach, DMA_HandleTypeDef* rxdma, uint32_t rxdmach) { /* USART2 DMA Init */ /* USART2_RX Init */ rxdma->Instance = getDmaStreamTypeDef(rxdma); rxdma->Init.Channel = rxdmach; rxdma->Init.Direction = DMA_PERIPH_TO_MEMORY; rxdma->Init.PeriphInc = DMA_PINC_DISABLE; rxdma->Init.MemInc = DMA_MINC_ENABLE; rxdma->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; rxdma->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; rxdma->Init.Mode = DMA_NORMAL; rxdma->Init.Priority = DMA_PRIORITY_LOW; rxdma->Init.FIFOMode = DMA_FIFOMODE_DISABLE; if (HAL_DMA_Init(rxdma) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(uart, hdmarx, *rxdma); /* USART2_TX Init */ txdma->Instance = getDmaStreamTypeDef(txdma); txdma->Init.Channel = txdmach; txdma->Init.Direction = DMA_MEMORY_TO_PERIPH; txdma->Init.PeriphInc = DMA_PINC_DISABLE; txdma->Init.MemInc = DMA_MINC_ENABLE; txdma->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; txdma->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; txdma->Init.Mode = DMA_NORMAL; txdma->Init.Priority = DMA_PRIORITY_LOW; txdma->Init.FIFOMode = DMA_FIFOMODE_DISABLE; if (HAL_DMA_Init(txdma) != HAL_OK) { Error_Handler(); } __HAL_LINKDMA(uart, hdmatx, *txdma); } }; } // namespace iflytop