STM32串口通讯数据被上位机软件一分为二

使用STM32的USART1跟上位机软件通讯,发送15字节长度的数据,使用for循环发送数组元素的方式,使用9600的波特率时,数据有时候会被软件分成两段,波特率115200时,出现的频率减少,波特率460800时不会出现这种情况。
for(i=0;i<15;i++)
{
USART_SendData( USART1, data[i]);
while( USART_GetFlagStatus(USART1, USART_FLAG_TC)== RESET);
delays_ms(2);
}
延时2ms是我试出来相对稳定的延时时长,不加延时或其它延时时长,数据一分为二的概率增加,如果用460800波特率不用延时是正常的,9600不行。
本来应该是一串15字节的数据,变成了一组7字节和一组8字节的两组数据,也可能是其他字节数的两组数据
不知道大家有没有出现过这样的问题,盼回。

这事常见,波特率越低越常见。这个问题一般是改上位机。

数据怎么被一分为二?具体说一下现象

发送时把其他中断都关掉