u16 USART2_Buffer[254];
u8 USART2_Sta=0;
u16 data=0;
u16 re=0;
void USART2_IRQHandler()
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
USART2_Buffer[data]=USART_ReceiveData(USART2);
if(data==0xfe||'\r'==USART2_Buffer[data])
{
//USART_ITConfig(USART_COMx,USART_IT_RXNE,DISABLE);
USART2_Buffer[data]='\0';
USART2_Sta=1;
}
data++;
}
/*if((USART2_Buffer[0]==0x5A)&& (USART2_Buffer[data-1]==0x5A))
{
USART2_Sta=1;
}
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE==SET))
{
USART_ClearFlag(USART2,USART_FLAG_ORE);
USART_ReceiveData(USART2);
}*/
if(USART2_Sta)
{
for(re=0;re<data;re++)
{
USART_SendData(USART2, USART2_Buffer[re]);
}
data=0;
//re=0;
USART2_Sta=0;
}
//USART_SendData(USART2, data);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
{
}
}
希望出现此类问题的高手指点。谢谢。
|