现象是这样的,STM32不断发送数据如:01,02,03,04,。。。。。,如这时串口助手不打开串口,过一会再打开,就会出现丢失一个字节的情况!如:01,02,03,这时关闭电脑的串口,再打开,再接收的数据就会是05,06,07。。。。 04这个字节丢了!想知道原因!单步跟程序:
while(1)
{
USART_SendData(USART2, i++);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET){}
}
中
USART_SendData(USART2, i++);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET){}
当关闭电脑的串口这两句还在不停执行!我觉着当这样总是后一个字节进入TDR,再被后一个字节覆盖掉!应丢失很多字节!为什么再打开串口时!总是只丢了一个字节!如果说这些字节是被计算机串口的接收缓存给缓存了!那有为什么会丢一个!而不是全都缓存不损失!这个丢失的字节是在什么过程中被后一个字节覆盖丢失了呢! |