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

F407串口DMA发送卡死在HAL_DMA_GetState

[复制链接]
北海道咸鱼 提问时间:2024-3-4 11:09 / 未解决

使用五路串口DMA收发数据,但是在发送的时候,到了while(HAL_DMA_GetState(&hdma_usart3_tx) != HAL_DMA_STATE_READY);的时候就一直无法跳出了。

这个是发送函数

image.png

卡死在了打断点的那个发送处

image.png

收藏 评论5 发布时间:2024-3-4 11:09

举报

5个回答
北海道咸鱼 回答时间:2024-3-4 14:09:07

有没有大佬来帮一下忙呀

xmshao 回答时间:2024-3-4 15:55:07
库函数里有些地方设置状态机变量,正常来讲可能需要在相应回调函数里释放相关外设运行状态,但我们有时往往没
按他们流程来。 你可以在调用发送函数是直接将状态改为Ready,类似下面:
huartx.gState  = HAL_UART_STATE_READY;
      HAL_UART_Transmit_DMA(...........);
背影101 回答时间:2024-3-5 11:06:18
[md]
北海道咸鱼 回答时间:2024-3-5 11:16:59

fa6519f71fe0b3a2f1052263b7831f3.png接收到的数据也对,可以看到串口四接收到的消息数量是正确的,而串口三接收数据大小是红框里的,像随机数一样的

butterflyspring 回答时间:2024-3-5 15:58:14
北海道咸鱼 发表于 2024-3-5 11:16
[md]![fa6519f71fe0b3a2f1052263b7831f3.png](data/attachment/forum/202403/05/111540tcnnfflrajlf3bl3.pn ...

这个结果可以看到有数据收到,但不确定是否总线上就是这个数据还是软件等其他原因。

因此可以尝试用示波器或逻辑分析直接线上究竟是不是正确的数据。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版