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

DMA传输完成后,串口与DMA一直处于忙状态

[复制链接]
猫又又 提问时间:2025-11-24 11:32 / 未解决

使用U5系列,UART4TX + DMA转运功能。程序运行的第一次能正常发送,并且DMA发送完成后正常进入中断服务函数,转运完成标志位置位。但DMA与串口的状态一直处于忙状态没有转变为空闲状态,导致第二次发送无法成功进行。 当我在传输完成中断中手动置位串口与DMA的状态才能再次进行发送。

huart4.gState = HAL_UART_STATE_READY;
    handle_GPDMA1_Channel10.State = HAL_DMA_STATE_READY;

想询问一下大佬们,是我可能cubemx配置有问题?还是确实需要自己软件置位相关状态?

赞 收藏 评论2 发布时间:2025-11-24 11:32

举报

2个回答
butterflyspring 回答时间:2025-11-24 15:53:24
看看是不是只打开DMA中断,没有打开USART的中断。

xmshao 回答时间:2025-11-25 13:40:01

你的cubeMx配置没有问题,这个跟库代码设计的状态变量管理有关。

这个状态位在库里通常基于相关外设中断处理回调函数来管理的,但我们有时可能

并没有完全按照库的逻辑来设计代码,比方这里并不开启UART中断,只是启用UART tx/rx事件的

DMA传输,同时又要用到库提供的APP,我们此时需要额外针对状态位做状态位的调整,

比方复位啊、忙碌这些,根据具体状态调整即可。具体到你现在的做法,是常见的做法。

这个话题在论坛也经常聊起,不妨将库代码多看看也就知道怎么回事了。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版