STM32中串口例子中的while等待发送结束:1,寄存器:for(t=0;t<len;t++) { USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0); //等待发送结束 } printf("\r\n\r\n");//插入换行 USART_RX_STA=0;注意:这里等待结束指的是每发一个字符就等待结束,然后再进行下一个字符发送循环。2,HAL库: if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("\r\n您发送的消息为:\r\n"); HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000); //发送接收到的数据 while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET); //等待发送结束 printf("\r\n\r\n");//插入换行 USART_RX_STA=0; }else {.....}注意:这里的等待发送结束,是一次性全部发完后等待结束。