板子:STM32G0B1 方式:UART2空闲中断+DMA接收 问题:烧写程序后,板子一上电就自动进入空闲中断,但此时没有数据发送,当采用上位机发送数据时,可以进入空闲中断,但DMA接收不到数据? 求帮助,感谢感谢! |
我这边做了验证的确会出现你说的现象,个人认为库函数在处理跟空闲有关的中断处理代码部分有些问题。你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,__HAL_UART_CLEAR_FLAG(&huart2, UART_CLEAR_IDLEF);不要留到后面让库代码处理,这个地方它处理得有点问题。
想问问是什么原因造成的
DMA接收数据长度,只有到达指定长度后才能产生中断,在线仿真模式下,断点可以看一下DMA使用的缓冲区中,是否有数据。
最好是模拟一个上位机通讯,这样容易调试。先发一个字节看看是否能正常接收,然后再增加。 如果一个字节都不正常,那就调试检查基本配置了。 若果多个字节不正常,那要看看逻辑上是不是有问题,调试一下就找到了。
你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,__HAL_UART_CLEAR_FLAG(&huart2, UART_CLEAR_IDLEF);不要留到后面让库代码处理,这个地方它处理得有点问题。
DMA接收数据长度,只有到达指定长度后才能产生中断,在线仿真模式下,断点可以看一下DMA使用的缓冲区中 ...
[md]感谢,问题已解决
最好是模拟一个上位机通讯,这样容易调试。先发一个字节看看是否能正常接收,然后再增加。如果一个字 ...
[md]感谢,问题已解决
你这样,在每次进UART中断里首先检查下IDLE标志,如果该标志置位了,我们自己 先行对该位 清零,_HAL ...
[md]感谢,问题已解决
请问咋解决的?