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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版