dma串口发送数据后一直显示HAL_UART_STATE_BUSY_TX

项目场景:

提示:这里简述项目相关背景:

为了实现车间通信新增了一个利用函数HAL_UART_Transmit_DMA进行串口DMA发送的代码
其中函数HAL_UART_Transmit_DMA用到的串口句柄UART_HandleTypeDef * huart 是类里面的成员
通过调用对象的初始化函数传递进去

在这里插入图片描述


问题描述

DMA发送函数只能被调用一次

在测试车间通信时,信息的接收是正常的
但发送信息只能发送一次,每次都是第一次发送成功,
后面的发送都没法被另一个机器人接收

状态位无法被重置

逐步debug DMA发送函数HAL_UART_Transmit_DMA
发现函数会对串口句柄的一个状态位gState进行判断
只有在huart->gState==HAL_UART_STATE_READY的时候
才会正常进行发送

在这里插入图片描述

而第一次发送可以成功,便是因为一开始gS

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值