初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2014-11-21
- 在线时间
- 0 小时
|
5金钱
接受不成功返回发送FF,为什么我要点两次发送才会接受成功?求大神指点
void USART1_IRQHandler(void) //
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //例程里的
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //
if(Res==0XED)//数据头
{
sta1=1;//置第一位接受成功标志下同
len-=1;
USART_SendData(USART1,0X01);//发送第一位接受成功标志便于我在串口助手上看到接受判断成功了下同
}
else if(Res==0X0c && sta1==1 && len==10)
{
sta2=1;
len-=1;
USART_SendData(USART1,0X02);
}
else if(Res==0X75 && sta2==1 && len==9)
{
sta3=1;
len-=1;
USART_SendData(USART1,0X03);
}
else if(Res==0X01 && sta3==1 && len==8)
{
sta4=1;
len-=1;
USART_SendData(USART1,0X04);
}
else if(sta4==1 && len==7)
{
cha=Res;
len-=1;
sta5=1;
USART_SendData(USART1,0X05);
}
else if(sta5==1 && len==6)
{
cha=Res;
len-=1;
sta6=1;
USART_SendData(USART1,0X06);
}
else if(sta6==1 && len==5)
{
grp1=Res;
len-=1;
sta7=1;
USART_SendData(USART1,0X07);
}
else if(sta7==1 && len==4)
{
grp2=Res;
len-=1;
sta8=1;
USART_SendData(USART1,0X08);
}
else if(sta8==1 && len==3)
{
grp3=Res;
len-=1;
sta9=1;
USART_SendData(USART1,0X09);
}
else if(sta9==1 && len==2)
{
ctr=Res;
len-=1;
sta10=1;
USART_SendData(USART1,0X10);
}
else if(sta10==1 && len==1)
{
wtime=Res;
len-=1;
sta11=1;
USART_SendData(USART1,0X11);
}
else if(sta11==1 && len==0)
{
chek=Res;
sta11=0;
USART_SendData(USART1,0X12);
}
else
{
USART_SendData(USART1,0XFF);
sta1=0;//清标志位
sta2=0;
sta3=0;
sta4=0;
sta5=0;
sta6=0;
sta7=0;
sta8=0;
sta9=0;
sta10=0;
sta11=0;
len=11;
cha=0;
grp1=0;
grp2=0;
grp3=0;
ctr=0;
wtime=0;
chek=0;
chek1=0;
acceptfinish=0;
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
回复【2楼】正点原子:
---------------------------------
多谢原子哥指点,解决了,原因是接受成功没初始化
|