void USART2_IRQHandler(void)
{
INT8U TempData;
if(USART_GetIntBitState(USART2, USART_INT_RBNE) != RESET)
{
TempData = USART_DataReceive(USART2);
if(b_Usart2_Rxd_End)
{
if(!b_Usart2_Rxd_Start)
{
b_Usart2_Rxd_Start = 1;
b_Usart2_Rxd_Err = 0;
Usart2_Rxd_Len =0;
pUsart2_Rxd =Usart2_Rxd_Buf;
}
if(Usart2_Rxd_Len <USART2_RX_MAX)
{
*pUsart2_Rxd++ = TempData;
Usart2_Rxd_Len++;
}
else
{
b_Usart2_Rxd_Err = 1;
}
}
Usart2_Rxd_TimeCnt = 0;
}
else if(USART_GetIntBitState(USART2, USART_INT_TC) != RESET)
{
if(Usart2_Txd_Len >0)
{
Usart2_Txd_Len--;
USART_DataSend(USART2 , *pUsart2_Txd++ );
}
else
{
USART_INT_Set(USART2, USART_INT_TC, DISABLE);
}
}
USART_ClearIntBitState(USART2, USART_INT_ORE);
}
总算好了
|