倚天杖
单片机有串口中断。串口每收到1byte数据就会触发1次接收中断。中断一般像下面这面,你可以根据自己的需求改。我的做法是中段里只管接收数据,然后定时器中监测一定时间内没有收到数据,认为数据接收完毕,然后置位接受完成标志。在主函数中查询这个标志,进行数据处理。123456789101112131415161718192021222324void USART1_IRQHandler (void)//串口中断{ u8 dat,flag = 0; if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET) { USART_ClearITPendingBit(USART1,USART_IT_ORE); dat = USART_ReceiveData(USART1); flag = 1; } if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET) //Receive Data register not empty interrupt. { USART_ClearITPendingBit(USART1,USART_IT_RXNE); dat = USART_ReceiveData(USART1); flag = 1; } if(flag == 1) { Uart1RecvOver.recvOver = 0; if(PushInQueue_Q(&uart1RecvQueue, dat)) Uart1RecvOver.recvTimeCnt = 0; else Uart1RecvOver.recvTimeCnt = USART_RECV_END_TIME; }}