用PC 发送一组16进制的数 当检验到有FE以后 接受FE 之后的数字
可是我在发送数据之后 串口接收的第一组数据是正确的 之后就接收的少了一位
例如 发送
FE FE 23 24 25 26 16
应该接收到
23 24 25 26 16
我接受的成了 24 25 26 16
大家帮我看看我的程序有什么问题 这是我接收中断的程序
void USART1_IRQHandler(void)
{
char RX;
static char rx[8];
char *p;
static int i=0,s=0;
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //判断发生接收中断
{
RX=USART_ReceiveData(USART1);
if(RX==0xFE)
s=1;
else if(s!=0)
rx[i++]=RX;
if(RX==0x16)
{
p=rx;
while(i--)
{
USART_SendData(USART1, *p++);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
}
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}
} |