STM32
直播中

qjqb

9年用户 1365经验值
擅长:5762
私信 关注
[问答]

STM32G0空闲中断异常,且DMA接收不到数据是怎么回事?

板子:STM32G0B1
方式:UART2空闲中断+DMA接收
问题:烧写程序后,板子一上电就自动进入空闲中断,但此时没有数据发送,当采用上位机发送数据时,可以进入空闲中断,但DMA接收不到数据?
求帮助,感谢感谢!

回帖(3)

黄颖

2024-3-26 14:31:08
最好是模拟一个上位机通讯,这样容易调试。先发一个字节看看是否能正常接收,然后再增加。
如果一个字节都不正常,那就调试检查基本配置了。
若果多个字节不正常,那要看看逻辑上是不是有问题,调试一下就找到了。
举报

李麒铭

2024-3-26 14:31:16
在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,__HAL_UART_CLEAR_FLAG( huart2, UART_CLEAR_IDLEF);不要留到后面让库代码处理,这个地方它处理得有点问题。
举报

郝埃连

2024-3-26 18:12:02
可能是由于配置不正确或者程序逻辑出现问题导致的。以下是可能导致这个问题的一些原因和解决方法:

1. 检查串口配置:确保串口配置正确,包括波特率、奇偶校验位、停止位等参数与上位机设置一致。

2. 检查DMA配置:确保DMA配置正确,包括DMA通道、传输方向、内存地址和数据大小等参数设置正确。

3. 检查GPIO配置:确保UART引脚的GPIO配置正确,包括引脚复用和输入输出模式设置正确。

4. 检查空闲中断配置:确认空闲中断的使能和优先级设置正确。

5. 检查接收缓冲区设置:确保接收缓冲区设置正确,包括缓冲区长度、地址和空闲中断触发阈值等参数。

6. 检查程序逻辑:检查程序逻辑是否正确,是否有其他地方阻塞了DMA的接收过程,或者接收数据后没有正确处理。

7. 调试方法:可以通过串口打印调试信息来查看是否有错误提示,或者通过逐步调试的方式定位问题所在。

总的来说,需要仔细检查串口、DMA和GPIO的配置是否正确,以及确保程序逻辑没有问题。如果还是无法解决问题,可以提供更详细的代码和配置信息,以便更好地帮助解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分