初级会员
- 积分
- 175
- 金钱
- 175
- 注册时间
- 2017-12-31
- 在线时间
- 40 小时
|
1金钱
首先我通过编写代码让串口配置wifi模块,然后电脑连接wifi模块成功之后,打开网络调试助手,都是十分流畅的。我想通过网络调试助手发送1,单片机上的LED0亮,发送2,单片机上的LED0灭。但是我在实际操作过程中发现,单片机的反应要慢了一拍。意思就是:第一次:我发送1 单片机无反应 第二次:我发送2 单片机上的LED0亮 第三次:我发送2 单片机上的LED0灭。 也就是说单片机执行的动作是我前一步发送的指令。我陷入了深深地思考当中,希望有前辈帮助。因为只需要编写wifi模块对应串口的接受中断 代码如下 就是用的原子哥例程里面的
void UART7_IRQHandler(void)
{
u8 Res;
if(USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
{
USART_ClearITPendingBit(UART7,USART_IT_RXNE);
Res =USART_ReceiveData(UART7);//(USART1->DR); //¶á衽óêÕμ½μÄêy¾Y
if((UART7_RX_STA&0x8000)==0)//½óêÕÎ′íê3é
{
if(UART7_RX_STA&0x4000)//½óêÕμ½áË0x0d
{
if(Res!=0x0a)UART7_RX_STA=0;//½óêÕ′íÎó,ÖØD¿aê¼
else UART7_RX_STA|=0x8000; //½óêÕíê3éáË
}
else //»1ûêÕμ½0X0D
{
if(Res==0x0d)UART7_RX_STA|=0x4000;
else
{
UART7_RX_BUF[UART7_RX_STA&0X3FFF]=Res ;
UART7_RX_STA++;
if(UART7_RX_STA>(USART_REC_LEN-1))UART7_RX_STA=0;//½óêÕêy¾Y′íÎó,ÖØD¿aê¼½óêÕ
}
}
}
}
}
下面的代码是主函数
while(1)
{
if(UART7_RX_STA&0x8000)
{
len=UART7_RX_STA&0x3fff;
if(UART7_RX_BUF[len-1]==0x31)
LED0=0;
if(UART7_RX_BUF[len-1]==0x32)
LED0=1;
UART7_RX_STA=0;
}
}
|
|