|
u16 USART2_RX_STA=0;
void USART2_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//接收到數(shù)據(jù)
{
res =USART_ReceiveData(USART2);
if((USART2_RX_STA&(1<<15))==0)//接收完的一批數(shù)據(jù),還沒有被處理,則不再接收其他數(shù)據(jù)
{
if(USART2_RX_STA<USART2_MAX_RECV_LEN) //還可以接收數(shù)據(jù)
{
TIM_SetCounter(TIM4,0);//計(jì)數(shù)器清空 //計(jì)數(shù)器清空
if(USART2_RX_STA==0) //使能定時(shí)器4的中斷
{
TIM_Cmd(TIM4,ENABLE);//使能定時(shí)器4
}
USART2_RX_BUF[USART2_RX_STA++]=res; //記錄接收到的值
}else
{
USART2_RX_STA|=1<<15; //強(qiáng)制標(biāo)記接收完成
}
}
}
}
|
|