在STM32单片机中,利用DMA实现串口通信的代码示例如下。首先,我们需要初始化相关的DMA和串口配置结构体,然后通过HAL库的函数进行初始化。以下是一个简单的示例代码片段:

// DMA配置结构体
DMA_InitTypeDef dmaInitStruct;

// 串口配置结构体
USART_InitTypeDef usartInitStruct;

// 初始化USART和DMA
HAL_UART_Init(&;huart1);
HAL_UART_Init(&;huart2);
HAL_DMA_Init(&;hdma_usart1_rx);
HAL_DMA_Init(&;hdma_usart2_rx);

// 配置DMA传输参数
__HAL_DMA_ENABLE_IT(&;hdma_usart1_rx, DMA_IT_TC);
__HAL_DMA_ENABLE_IT(&;hdma_usart2_rx, DMA_IT_TC);

// 启动DMA传输
HAL_UART_Receive_DMA(&;huart1, rxBuffer1, RX_BUFFER_SIZE);
HAL_UART_Receive_DMA(&;huart2, rxBuffer2, RX_BUFFER_SIZE);

在这个示例中,我们使用了STM32的HAL库来初始化USART和DMA,并配置了DMA的传输参数。通过启动DMA传输,实现了串口通信的不定长度数据传输。请注意,具体的配置参数需要根据实际情况进行调整,例如波特率、数据位数等。以上代码仅供参考,具体的应用中需要根据实际需求进行适配。