初级会员
- 积分
- 147
- 金钱
- 147
- 注册时间
- 2014-11-4
- 在线时间
- 3 小时
|
楼主 |
发表于 2015-3-10 15:10:41
|
显示全部楼层
回复【5楼】fly0000:
---------------------------------
void USART2_IRQHandler(void)
{
u8 res;
OSIntEnter(); //进入中断
if(USART2->SR&(1<<5))//接收到数据
{
res=USART2->DR;
if(res=='^')
{
OSSemPost(Sem_Event_gprs);
res='\0';
}
if(USART2_RX_STA<64) //还可以接收数据
{
TIM4->CNT=0; //计数器清空
if(USART2_RX_STA==0)TIM4_Set(1); //使能定时器4的中断
USART2_RX_BUF[USART2_RX_STA++]=res; //记录接收到的值
}else
{
USART2_RX_STA|=1<<7; //强制标记接收完成
}
}
OSIntExit(); //触发任务切换软中断
}
发送心跳包时,连接成功会接受一个ok返回,可是这事同时又向GSM发送数据,接收都是通过这个串口中断 |
|