haiya6688 发表于 2019-11-27 11:14:06

H743串口用dma发送数据存在问题,求大佬解答

板子:h743
程序:dma+串口发送
编译器:cubeide
操作:用cubemx生成的代码,串口中断和dma中断都开了,经过测试中断发送没问题。
问题:没数据,启动dma发送后,第一次进入dma中断,只有传输完成和传输到一半的标志位置一,就不再进入中断了,再次发送返回hal_busy。
变量在D2内存域
变量在D1内存域会多一个中断标志位是DMEIF直接模式错误标志位

发表于 2019-11-27 13:59:43

楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。

haiya6688 发表于 2019-11-27 14:32:34

安 发表于 2019-11-27 13:59
楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。 ...

是串口中断对吧,可是没有任何数据打印出来,今天晚上我去看看

3111272 发表于 2019-11-27 20:36:57

楼主贴下你的DMA配置看一下,是不是没有配置成循环模式。

haiya6688 发表于 2019-11-29 17:56:31

安 发表于 2019-11-27 13:59
楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。 ...

没有关闭

haiya6688 发表于 2019-11-29 18:02:22

3111272 发表于 2019-11-27 20:36
楼主贴下你的DMA配置看一下,是不是没有配置成循环模式。
模式是正常模式file:///C:/Users/10435/AppData/Roaming/Tencent/Users/1043588800/TIM/WinTemp/RichOle/L585JDZV9QV3~%7D))VVLMQLI.png

radio2radio 发表于 2019-11-29 19:22:07

我怀疑串口驱动的底层有bug。

我在用F7xx的串口时,https://www.stmcu.org.cn/module/forum/thread-621670-1-1.html
发现不能使用DMA模式,只要一开DMA,马上串口工作就不正常了,没时间找原因,只好不用就是了,反正串口是慢速设备,我F7时钟216MHz飞快,中断模式也很好用。

发表于 2019-11-29 20:03:34

楼主您好,不是这个配置。是HAL库,一般都是采集完成后,中断就关闭了。在stm32f4xx_hal_dma.c中处理完中断后,会有关闭中断的操作。楼主看一下7系列是不是也一样,最好仿真看一下DMA的寄存器,这样就确定是不是关闭中断了。
/* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */

发表于 2019-11-29 20:31:28

楼主,我看了在F7里面HAL_DMA_IRQHandler中断处理完成时,如果CIRCULAR是关闭的,将会执行关闭中断。
/* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */
页: [1]
查看完整版本: H743串口用dma发送数据存在问题,求大佬解答