完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先我通过编写代码让串口配置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; } } |
|
相关推荐
5个回答
|
|
if (USART_RX_BUF[0]=='1')
{ LED0=0; printf("LED0亮n"); } if (USART_RX_BUF[0]=='2') { LED0=1; printf("LED0亮n"); } 试下 |
|
|
|
这样不行哦 每次网络调试助手发送给wifi模块的信息不仅仅包括 我发送的1或者2 前面还有 一些前缀,比如说是: 192.1.4 发送 1 前面具体的前缀是啥我没有考虑,只用代码读取最后一个数据
|
|
|
|
|
|
但是仍然存在问题,我不知道如何解决,单片机接收并执行的动作比发送的动作慢了一拍
|
|
|
|
老哥 18年了解决了吗
|
|
|
|
只有小组成员才能发言,加入小组>>
7344 浏览 9 评论
2433 浏览 2 评论
为什么我用esp8266做TCP服务器网络调试助手一直连接不上去?
9533 浏览 3 评论
为什么我的ESP8266 AT指令一直返回error无法正常使用?
7361 浏览 0 评论
4191 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-13 12:59 , Processed in 0.522787 second(s), Total 50, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号