|
STM32F407ZGT6 使能空闲中断和 DMA 的 uart3 与 esp8266 通信,会触发串口错误。在串口错误回调函数中,作以下处理:
__HAL_UNLOCK(huart); // 先解锁
HAL_UART_DMAStop(huart); // 再停止DMA
memset(rx_buffer, 0, BUFFER_SIZE); // 清空缓存(按需选择)
HAL_UARTEx_ReceiveToIdle_DMA(huart, rx_buffer, BUFFER_SIZE); // 重启接收
我在网上看有人说这种情况下要先解锁再停止 DMA,也有说停止 DMA 接受与重启接受之间需要一段时间反应,我想把 DMA 停止放到解锁之前,提高一点反应时间,所以想问一下,解锁和停止 DMA 能不能调换顺序?
|
|