王伟凡930 2023-02-03 21:59 采纳率: 50%
浏览 483
已结题

STM32基于HAL库使用串口发送16进制数组

uint8_t dj[12]={0x55,0x55,0x05,0x06,0x01,0x01,0x00};
uint8 t i;
for(i=0;i<7;i++)
{HAL_UART_Transmit (&huart4,&dj[i],1,0xfff);}
这样写对不对

img


img

  • 写回答

8条回答 默认 最新

  • 诺水城子 2023-02-07 11:19
    关注

    去掉for,直接用 HAL_UART_Transmit (&huart4,dj,7,0xfff); 要考虑可能存在的丢包和断包问题,发送7字节,接收方可能接收1次或者多次才能收满这7字节。

    丢包主要考虑底层缓存空间太小,接收不及时数据被覆盖掉。可以测试一下你原来for循环单次1一字节,每次发送增加点延时。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 修改了问题 2月3日
  • 修改了问题 2月3日
  • 展开全部

悬赏问题

  • ¥15 h3.6m 人类行为预测论文复现
  • ¥50 wordpress项目注册报失败刷新后其实是成功状态,请求排查原因
  • ¥20 linxu服务器僵尸进程不释放,代码如何修改?
  • ¥15 pycharm激活不成功
  • ¥40 如果update 一个列名为参数的value
  • ¥15 基于51单片机的水位检测系统设计中LCD1602一直不显示
  • ¥15 OCS2安装出现问题,请大家给点意见
  • ¥15 ros小车启动launch文件报错
  • ¥15 vs2015到期想登陆但是登陆不上
  • ¥15 IPQ5018制作烧录固件,boot运行失败(操作系统-linux)(相关搜索:操作系统)(相关搜索:操作系统)