Receive strings from a APP via UART on an STM32 microcontroller. But it not works, it can not recieive the string. Help!

My code is designed to receive strings from a host computer via UART(Bluetooth) on an STM32 microcontroller.
Delay_Bule_tooth2abc.aia (7.5 KB)
The main functionality is to receive data, echo it back, analyze the received data, and control an LED and relay based on the analysis.

The following is my STM32 coding(When compile, there is no error):

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "myus.h"

#include "jdq.h"



void Analysis_Ser(void);
unsigned int res=200;
u8 USART_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节.
u16 USART_RX_STA=0;       //接收状态标记	  



 int main(void)
 {	
	 
	u8 len,t;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	 
	delay_init();	    //延时函数初始化	  
	LED_Init();		  	//初始化与LED连接的硬件接口
  My_US_Init();
 	relay_init();
	 
	while(1)
	{
		
				// 等待数据接收
		 		if(USART_RX_STA&0x8000)
		{
			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
//			printf("\r\n您发送的消息为:\r\n");
			for(t=0;t<len;t++)
			{
				
//				USART1->DR=USART_RX_BUF[t];
//				while((USART1->SR&0X40)==0);//等待发送结束
				USART_SendData(USART1, USART_RX_BUF[t]); //向串口 1 发送数据
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束

			}
//			printf("\r\n\r\n");//插入换行
			Analysis_Ser();//数据解析函数
			USART_RX_STA=0;//标志位清零
		}
		

		
		
		relay_off();//关闭relay
		
		if (res==1) //如何res=1,relay 开启
		{
		
		LED0=1; // PB5
//		LED1=0;// PA5	。我把PE换成了PA。
	relay_on();//开启relay
			
		delay_ms(1000);	//延时300ms
		}
	
		else  //如何res=0,relay 关闭
		{

		LED0=0;
//		LED1=1;
					relay_off();//关闭relay
		delay_ms(1000);	 //延时300ms
		
		}

	}
 }

 
 
 //中断服务函数
void USART1_IRQHandler(void)
{
//	u8 res1;
//	if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)
//	{
//	res1=USART_ReceiveData(USART1);
//	
////		USART_SendData(USART1,res);
//		res=res1;
//	}
	
u8 Res;
#if SYSTEM_SUPPORT_OS 		//如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
	OSIntEnter();    
#endif
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
		{
		Res =USART_ReceiveData(USART1);	//读取接收到的数据
		USART_SendData(USART1,Res);	//自己添加的,把读取接收到的数据发送出来
		
		if((USART_RX_STA&0x8000)==0)//接收未完成
			{
			if(USART_RX_STA&0x4000)//接收到了0x0d 回车 代码
				{
				if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 如果不是 0x0a换行 代码
				else USART_RX_STA|=0x8000;	//接收完成了 
				}
			else //还没收到0X0D
				{	
				if(Res==0x0d)USART_RX_STA|=0x4000;
				else
					{
					USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
					USART_RX_STA++;
					if(USART_RX_STA>(USART_REC_LEN-1))
						USART_RX_STA=0;//接收数据错误,重新开始接收	  
					}		 
				}
			}
			USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 清除中断标志位			
     } 
#if SYSTEM_SUPPORT_OS 	//如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
	OSIntExit();  											 
#endif	
//	res=Res;
//			Analysis_Ser();//数据解析函数
//			USART_SendData(USART1,res);//发送收到的数据,这个位置容易出问题,卡死蓝牙app

}


void Analysis_Ser(void)
{
	if((USART_RX_BUF[0]=='a')&&(USART_RX_BUF[1]=='b')&&(USART_RX_BUF[2]=='c'))//运行过程中运行一定间隔的距离
	{
		res=1; //STM32串口接收字符型数字字符串转换为整型数
	}
	else 
	{
		res=0; //STM32串口接收字符型数字字符串转换为整型数
	}
}