硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 212|回复: 3
收起左侧

[UART] h743zit6 uart DMA 配合UART_FLAG_IDLE 不好调试啊

[复制链接]

28

主题

60

回帖

144

积分

初级会员

积分
144
发表于 2026-9-26 17:05:10 | 显示全部楼层 |阅读模式
版主,各位大佬


        有个问题,H743  uart 的这个UART_FLAG_IDLE 标志位,我理解的是接收 引脚空闲,产生中断,这样好处理不等长的数据。

        不过我发现发送数据的时候也会进入到这个中断标志位。

       我的思路是tx和rx都使用dma传输,减少mcu的负担(如果用普通中断接受数据),不等长数据收到后,再进中断取走数据。

       tx数据直接DMA启动就可以了。

       大家遇到过这样的问题吗?

谢谢大家
回复

使用道具 举报

2

主题

45

回帖

51

积分

初级会员

积分
51
发表于 2026-9-26 19:04:53 | 显示全部楼层
程序哪里写错了吧,IDLE只针对接收的,发送不应该影响IDLE标志位
回复

使用道具 举报

6

主题

25

回帖

43

积分

新手上路

积分
43
发表于 2026-9-27 08:15:21 | 显示全部楼层
我给你提供个方案,你先弄一个队列的代码作为中间缓冲,串口DMA双缓冲接收数据,在DMA的接收完成中断中将数据存到队列中,在串口空闲中断中将接收到内存一半中的数据在放到队列中。
回复

使用道具 举报

6

主题

25

回帖

43

积分

新手上路

积分
43
发表于 2026-9-27 08:17:24 | 显示全部楼层
发送数据同样是这样的。 你将发送数据将数据放到队列中,让后也用DMA进行发送,只不过你要注意的是, 记得在DMA传输完成中断中做循环队列要注意头尾数据分成两次发送,这个方案我测试 过,很稳定。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-10-8 12:44 , Processed in 1.074598 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表