您现在的位置是:首页 >技术教程 >STM32在程序中需要开关串口时的注意事项网站首页技术教程
STM32在程序中需要开关串口时的注意事项
简介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);
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。