if(send_update == 1) //说明目前串口正在接收数据,不要读缓冲区数据
{
send_lock=1; //开自锁标志
++send_cnt; //只要有数据接收,send_cnt每次都被串口中断清零
if(send_cnt>cnt_send) //延时一段时间,确认缓冲区没有继续接受数据
{
send_cnt=0;
send_update=0;
}
}
else
{
if(send_lock==1) //在数据已经接收完毕,并且还没有处理过数据的情况下
{
send_lock = 0;
len=USART_RX_STA&0x3fff; //得到此次接收到的数据长度
//printf("
您发送的消息为:
");
/************************************************************************************************************/
for(i=0;i<200;i++) //清除原来数据
{
data=0x20;//每一个字节都是空格
//data=0x40;//每一个字节都是空格
}
LCD_ShowString(8,50,216,64,16,data);
/************************************************************************************************************/
for(j=0;j<len;j++)
{
data[j]=USART_RX_BUF[j];//把收到数据放到word里
}
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];
while((USART1->SR&0X40)==0); //等待发送结束
}
printf("
"); //插入换行
USART_RX_STA=0;
//LCD_Clear(WHITE); //清屏
LCD_ShowString(8,50,216,64,16,data); //显示接受内容
//比如说我现在接收到的ASCII码内容 :acd
efd
red
//现在只能显示acd第一行
//单片机是全部接收到的,因为我串口助手返回接收到的数据是正确的
//求助怎么显示多行呢
for(t=0;t<200;t++)
{
USART_RX_BUF[t] = 0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>