void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
Res =USART_ReceiveData(USART1);//(USART2->DR); //读取接收到的数据
if((USART1_RX_STA&0x8000)==0)//接收未完成
{
USART1_RX_BUF[USART1_RX_STA&0X3FFF]=Res;
USART1_RX_STA++;
if((USART1_RX_STA&0X3FFF)>(USART1_REC_LEN-1))
{
USART1_RX_STA=0;//接收数据错误,重新开始接收
}
else
{
usart1_rec_time_out = 0;//计数器
USART1_RX_STA|=0x4000;//开始接收//开始计数
}
}
}
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)!= RESET)
{
if(USART1_RX_STA&0x4000)
{
usart1_rec_time_out ++;
if(usart1_rec_time_out> 20)
{
usart1_rec_time_out = 0;
USART1_RX_STA&=〜(0x4000); //取消计数标志
USART1_RX_STA | = 0x8000; //接收完成
}
}
TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);
}
}