void USART3_IRQHandler(void)
{
 u32 Res;
 if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)(USART3->SR&(1<<5))
 {
 Res =USART_ReceiveData(USART3);//(USART3->DR); //读取接收到的数据
 if((USART3_RX_STA&0x8000)==0)//接收未完成
 {
 if(USART3_RX_STA&0x4000)//接收到了0x0d
 {
 if(Res!=0x0a)
 {
 USART3_RX_STA&=0x3FFF; //如果没接收到0x0a,清除接收到0d标志位。继续接收数据
 USART3_RX_BUF[USART3_RX_STA&0X3FFF]=Res;
 USART3_RX_STA++;
 }
 else {USART3_RX_STA--;USART3_RX_STA|=0x8000;} //接收完成了 去掉最后的0X0A为实际数据
 }
 else //还没收到0X0D
 { 
 if(Res==0x0d)
 {
 USART3_RX_STA|=0x4000;
 USART3_RX_BUF[USART3_RX_STA&0X3FFF]=Res ;
 USART3_RX_STA++;
 }
 else
 {
 USART3_RX_BUF[USART3_RX_STA&0X3FFF]=Res ;
 USART3_RX_STA++;
 if(USART3_RX_STA>(USART3_REC_LEN-1))USART3_RX_STA=0;//接收数据错误,重新开始接收 
 } 
 }
 }
 else//接收完成了 
 {
 
 if((USART3_RX_STA&0xff)<4) USART3_RX_STA=0;//如果数据小于4个 则重新接收
 }
 
 else //还没收到0X0D
 { 
 if(Res==0x0d)
 {
 USART3_RX_STA|=0x4000;
 USART3_RX_BUF[USART3_RX_STA&0X3FFF]=Res ;
 USART3_RX_STA++;
 }
 else
 {
 USART3_RX_BUF[USART3_RX_STA&0X3FFF]=Res ;
 USART3_RX_STA++;
 if(USART3_RX_STA>(USART3_REC_LEN-1))USART3_RX_STA=0;//接收数据错误,重新开始接收 
 } 
 }
 }
 else//接收完成了 
 {
 
 if((USART3_RX_STA&0xff)<4) USART3_RX_STA=0;//如果数据小于4个 则重新接收
 }
 } 
}
以上子函数,是串口接受数据函数,在例程里面自带的。下面是我将接收到的数据加以处理,但是为什么始终不能在液晶屏上显示。
@串口数据处理
*/
static void UART3_CHECK(void)
{
 if(USART3_RX_STA&0x8000)
 { 
 u16 len; 
 Fontsize_set(16); 
 
 len=USART3_RX_STA&0XFF;//这里数据长度最大128 多余的不参与计算.实际不超过50
 
 if((USART3_RX_BUF[len-2]==0x0d)&&USART3_RX_BUF[len-1]==0x0a)//回车不参与实际数据计算
 len-=2; 
 //Display(70,Y1+5,0,0,0,0);
 if(len>255) len=0;
 
 USART3_RX_BUF[len]='\0';//结束符 
 w1x=USART3_RX_BUF[0]*10000+USART3_RX_BUF[1]*1000+USART3_RX_BUF[2]*100+USART3_RX_BUF[3]*10;
 dbm=1234;
 Display(70,Y1+5,w1x,dbm,zhubo,pinlv);
 }
}
这是为什么,各位大神麻烦指点一下