您现在的位置是:首页 >技术教程 >STM32在程序中需要开关串口时的注意事项网站首页技术教程

STM32在程序中需要开关串口时的注意事项

R301别走!! 2025-03-22 12:01:03
简介STM32在程序中需要开关串口时的注意事项

当再freertos中用到串口并且需要开关的时候需要先将串口的DMA关闭接收,之后先关DMA,再关闭串口

// 停止 UART 接收,避免 DMA 仍在使用
HAL_UART_Abort(&huart3);  

// 取消 UART 和 DMA 的关联(如果使用了 DMA)
__HAL_LINKDMA(&huart3, hdmarx, hdma_usart3_rx);

// 先释放 DMA
HAL_DMA_DeInit(&hdma_usart3_rx);

// 释放 UART
HAL_UART_DeInit(&huart3);

// 重新初始化 UART
HAL_UART_Init(&huart3);

// 重新初始化 DMA(如果使用 DMA)
HAL_DMA_Init(&hdma_usart3_rx);

// 重新绑定 DMA 到 UART
__HAL_LINKDMA(&huart3, hdmarx, hdma_usart3_rx);

// 重新启动 UART 接收(如果需要 DMA 接收)
HAL_UART_Receive_DMA(&huart3, rx_buffer, BUFFER_SIZE);
 


下面是我写的简易版
HAL_UART_Abort(&huart3);
HAL_DMA_DeInit(&hdma_usart3_rx);
HAL_UART_DeInit(&huart3);

HAL_UART_Init(&huart3);

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。