shuaishuai2599 发表于 2018-2-2 10:29:00

STM32F303 串口DMA接收 异常

各位大牛好:
    小弟使用了STM32F303芯片的串口DMA配合空闲中断来接收不定长的串口数据,现在发现有时候只能接收最开始的那一个字节(能确定发送到额数据大小没超过DMA的缓冲大小),过段时间,又会自行恢复正常。监控了串口的数据均正常,没有出现至发送一个字节的情况。请大家忙帮分析一下,代码如下,先谢谢各位


feixiang20 发表于 2018-2-2 11:48:05

曾经在网上看到一篇STM32串口 DMA 接收和发送的源码详解, 你可以去参考参考。另外程序异常可以逐行进行分析,修改自己怀疑的程序段的参数,我编程的时候也老出意外,也是逐行检查来解决的。另外缓冲大小是否真有限制。。

morphlings2014 发表于 2018-2-2 15:27:02

之前F7的时候使用是这样,好像没碰到问题。
最好在处理IDLE中断之后,加上HAL自带的中断处理函数,HAL_UART_IRQHandler(&huart3);




shuaishuai2599 发表于 2018-2-2 18:18:58

你好,感谢指导,相比较你的程序,多了huart3.hdmarx->NDTR=UART_RX_LEN,其实这句话在下面的HAL_UART_Receive_DMA()的函数中已经实现过了。现在比较纳闷,我的为什么只接收头一个字节呢,奇怪的是自己可以恢复正常。感谢你的指导,谢谢!

dsjsjf 发表于 2018-3-21 11:32:45

发送端发送的每个字节间时间间隔太长了,接收端误判断为空闲了
页: [1]
查看完整版本: STM32F303 串口DMA接收 异常