你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

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

收藏 评论8 发布时间:2019-11-27 11:14

举报

8个回答
废鱼 回答时间:2019-11-27 13:59:43
楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。
海鸦 回答时间:2019-11-27 14:32:34
安 发表于 2019-11-27 13:59
楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。 ...

是串口中断对吧,可是没有任何数据打印出来,今天晚上我去看看
3111272 回答时间:2019-11-27 20:36:57
楼主贴下你的DMA配置看一下,是不是没有配置成循环模式。
海鸦 回答时间:2019-11-29 17:56:31
安 发表于 2019-11-27 13:59
楼主,看一下HAL库DMA处理完后,是否关闭了中断。如果有,需要重新配置DMA开启才行。 ...

没有关闭
海鸦 回答时间: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
L585JDZV9QV3~}))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飞快,中断模式也很好用。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间: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 */

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间:2019-11-29 20:31:28
楼主,我看了在F7里面HAL_DMA_IRQHandler中断处理完成时,如果CIRCULAR是关闭的,将会执行关闭中断。
/* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版