用查询模式做串口的接收,发现一个很奇怪的问题,发送的最后一个字节接收时却成了第一个字节,不知道是什么原因。
不在到有没遇到类似问题的?这是怎么回事呢?
如发送:39 38 37 36 35 34
接收到的却是:34 39 38 37 36 35
如下:
int main(void)
{
u8 buf[20]={0x31,0x32};
uart_init(9600);
while(1)
{
do
{
if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)
{
buf[i++]=USART_ReceiveData(USART1);
while(USART_GetFlagStatus(USART1,USART_IT_RXNE)==RESET);
}
}while(i!=6);
if((buf[0]!=0)&&(buf[5]!=0))
{
Uart1_SendBytes(buf,6);
buf[0]=0;
buf[1]=0;
buf[2]=0;
buf[3]=0;
buf[4]=0;
buf[5]=0;
i=0;
}
}
}
测试如下:上位机发送十六进制:39 38 37 36 35 34
串口收到:34 39 38 37 36 35 |