串口接收最好用中断,通过一个缓冲区数组和标志位来与主程序交互,给你一个中断例程,stm32的,凑合着看吧。
void USART1_IRQHandler(void)
{
char tmp;
if(Usart1Cnt>30)
{
Usart1Ready = TRUE;
return;
}
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
tmp = USART_ReceiveData(USART1);
if(tmp == '\n' || tmp == '\r')
{
/* Received an Enter Key */
Usart1RxBuffer[Usart1Cnt++] = 0;
Usart1Ready = TRUE;
tmp = '\n';
}else if( tmp == 0x08)
{
/* Received a Backspace Key */
if(Usart1Cnt>0) Usart1RxBuffer[Usart1Cnt--] = 0;
}else
{
Usart1RxBuffer[Usart1Cnt++] = tmp;
}
/* Send the char back */
USART_SendData(USART1, tmp);
}
}
|