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);}
这样写对不对

STM32基于HAL库使用串口发送16进制数组
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- 诺水城子 2023-02-07 11:19关注
去掉for,直接用 HAL_UART_Transmit (&huart4,dj,7,0xfff); 要考虑可能存在的丢包和断包问题,发送7字节,接收方可能接收1次或者多次才能收满这7字节。
丢包主要考虑底层缓存空间太小,接收不及时数据被覆盖掉。可以测试一下你原来for循环单次1一字节,每次发送增加点延时。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用