rt-thread串口+DMA+空闲中断数据被拆分包怎么处理,难道需要加一个定时器来判断数据接收超时,那串口的DMA的功能就失去作用了。
查看更多
1、DMA的主要功能是解放CPU负担,帮助CPU是搬运数据;而不是为了串口数据“分包”;2、串口本身就是字节流数据,严格来说应增加帧头、帧尾,以便可靠地解析出一帧数据;3、如果一定要通过世间来判断数据包,建议开一个定时器计时,串口空闲中断时间太短。
根据前面大佬们讨论的,把dma_isr函数屏蔽了以后,经测试,发现串口接收数据不会拆包了。
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
根据前面大佬们讨论的,把dma_isr函数屏蔽了以后,经测试,发现串口接收数据不会拆包了。
你好。我在使用过程中也遇到这样的问题。请问你是将dma_isr函数屏蔽掉??我发现有两个函数使用到void HAL_UART_RxCpltCallback(UART_HandleTypeDef huart)和void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef huart)。。是屏蔽哪一个??还是两个都屏蔽掉??
@梦想飞翔 你好。我在使用过程中也遇到这样的问题。请问你是将dma_isr函数屏蔽掉??我发现有两个函数使用到void HAL_UART_RxCpltCallback(UART_HandleTypeDef huart)和void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef huart)。。是屏蔽哪一个??还是两个都屏蔽掉??
@蔡海允 我都给他屏蔽了,可行
@梦想飞翔
我屏蔽了,发现并不会解决问题。