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
{.....}
注意:这里的等待发送结束,是一次性全部发完后等待结束。