if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("
您发送的消息为:
");
// delay_ms(5000);//就是,有了一个延时之后就会丢掉第一个字符
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("
");//插入换行
USART_RX_STA=0;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
改成:while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
一个好像是开始发送,一个是发送完成。
开始发送是硬件开始发送,可以在发送寄存器放入新的数据。
发送完成是硬件发送完了,如果有新数据放入发送寄存器会直接开始发送。
#include "usart.h"
一周热门 更多>