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

HAL库串口DMA发送问题

[复制链接]
hu1hu2 提问时间:2021-2-20 13:29 /
我在调用HAL_UART_Transmit_DMA函数连续发送时发现发不出去(while(1)可以持续发送但可能丢了不少包),返回值为HAL_BUSY,条件即huart->gState == HAL_UART_STATE_READY不成立。在网上找解决方法都不能解决这个问题,比如在/* Set the UART DMA transfer complete callback */和/* Set the UART DMA Half transfer complete callback */中给 huart->gState赋值也不行。请问有什么好的解决方法?感觉也不像是数据还没发送完。
收藏 评论3 发布时间:2021-2-20 13:29

举报

3个回答
hu1hu2 回答时间:2021-2-20 13:33:15
打断点分步调试是可以输出的,有点费解。
radio2radio 回答时间:2021-2-20 19:27:08
你的发送“需求”到底有多繁忙呢? 这个很重要。

DMA相当于一种外设,UART在它的后面是一种更加慢的外设。
我理解,DMA可以解放MCU,但是不会自动帮你排队发送。
hu1hu2 回答时间:2021-2-21 20:14:27
radio2radio 发表于 2021-2-20 19:27
你的发送“需求”到底有多繁忙呢? 这个很重要。

DMA相当于一种外设,UART在它的后面是一种更加慢的外设。 ...

哦哦,谢谢,是不是可以理解为还是发送的太频繁了。我是在试验阶段,不是真正需求。我是比较极端的没有加延时。确实是这样,我加了延时就好了。谢谢
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版