while(1)
{
if(USART_RX_STA&0x8000)//得到此次接受的数据长度(当16位置1时说明此次接受完毕)
{
len=USART_RX_STA&0x3fff; //0x3fff即0011 1111 1111 1111
//其中第15位为0x0d换行/0x0a回车,用这种方式可以获取代码长度
printf("\r\n您发送的消息为:\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);
//这行代码可以将所获取的代码写入写入缓存区
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
//USART_GetFlagStatus用于检测标志位
//USART_FLAG_RXNE接收数据寄存器非空标志位即非空时就会持续运行
}
printf("\r\n\r\n");//\n为0x0d换行 \r为0x0a回车
USART_RX_STA=0; //接受位数值
}else
{
times++; //跟下一行代码相配合,意思是以0.5s为周期处理一次数据
if(times%5000==0)
{
printf("\r\n接受数据中\r\n");
}
if(times%200==0)printf("请输入数据,以回车结束\r\n");
if(times%30==0)LED0=!LED0;//LED闪烁以代表程序正常运行
delay_ms(10);
}
}
}