一、問題現象
在使用RT Thread操作系統,串口DMA接收數據時,通過log打印發現,例如GPS NEMA數據一包數據量較大或者時,接收到的數據被拆分多包處理;
二、問題解決方案
修改DMA驅動程序
在drivers/drv_usart.c中屏蔽如下代碼:
需要屏蔽如下兩個函數中的“dma_isr(&uart->serial);”語句;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{struct stm32_uart *uart;RT_ASSERT(huart != NULL);uart = (struct stm32_uart *)huart;//dma_isr(&uart->serial); //屏蔽該行代碼
}void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
{struct stm32_uart *uart;RT_ASSERT(huart != NULL);uart = (struct stm32_uart *)huart;//dma_isr(&uart->serial);//屏蔽該行代碼
}
三、實測驗證
實測驗證后,串口DMA不再被拆包;