完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
谢谢各位前辈点进来,先谢过各位前辈了。我最近在参加学校的电赛,需要用到STM32和ESP8266模块之间做通信,我用的是咱们发烧友的战舰V3和ATK-8266,程序也是按照标准历程改的,只保留了wifi透传的功能。
这是配置wifi透传部分的代码: #include "common.h" #include "stdlib.h" u8 atk_8266_wifista_test(void) { u16 rlen=0; u8 *p; atk_8266_send_cmd("AT+CWMODE=1","OK",50); //设置WIFI STA模式 atk_8266_send_cmd("AT+RST","OK",20); //DHCP服务器关闭(仅AP模式有效) delay_ms(1000); //延时3S等待重启成功 delay_ms(1000); delay_ms(1000); delay_ms(1000); //设置连接到的WIFI网络名称/加密方式/密码,这几个参数需要根据您自己的路由器设置进行修改!! sprintf((char*)p,"AT+CWJAP_CUR="%s","%s"",wifista_ssid,wifista_password);//设置无线参数:ssid,密码 while(atk_8266_send_cmd(p,"WIFI GOT IP",300)); //连接目标路由器,并且获得IP delay_ms(1000); atk_8266_send_cmd("AT+CIPMUX=0","OK",20); //0:单连接,1:多连接 delay_ms(1000); sprintf((char*)p,"AT+CIPSTART="UDP","192.168.43.1",8087"); //配置目标TCP服务器 while(atk_8266_send_cmd(p,"OK",200)); delay_ms(1000); atk_8266_send_cmd("AT+CIPMODE=1","OK",200); //传输模式为:透传 delay_ms(1000); USART3_RX_STA=0; atk_8266_quit_trans(); delay_ms(1000); sprintf((char*)p,"ATK-8266测试rn");//测试数据 atk_8266_send_cmd("AT+CIPSEND","OK",20); //开始透传 u3_printf("%s",p); delay_ms(1000); while(1) { if(USART3_RX_STA&0X8000) //接收到一次数据了 { rlen=USART3_RX_STA&0X7FFF; //得到本次接收到的数据长度 USART3_RX_BUF[rlen]=0; //添加结束符 printf("%s",USART3_RX_BUF); //发送到串口 USART3_RX_STA=0; } atk_8266_at_response(1); } } 这个是模块调用函数: void atk_8266_test(void) { while(atk_8266_send_cmd("AT","OK",20))//检查WIFI模块是否在线 { atk_8266_quit_trans();//退出透传 atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //关闭透传模式 delay_ms(800); } while(atk_8266_send_cmd("ATE0","OK",20));//关闭回显 while(1) { delay_ms(10); atk_8266_at_response(1);//检查ATK-ESP8266模块发送过来的数据,及时上传给电脑 atk_8266_wifista_test();//WIFI STA测试 } } 这个是主函数: int main(void) { delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级 uart_init(115200); //串口初始化为115200 usart3_init(115200); //初始化串口3 delay_ms(1500); atk_8266_test(); //进入ATK_ESP8266测试 } 上面的代码都是根据标准历程改的,数据收发的函数都没有动,问题就在于,如果修改上面那段加粗的代码,或者是删掉,即时是放在主函数里循环都会导致,模块停在连接路由器那一段,不能往下进行。 这是保留加粗代码的电脑串口信息,能够正常通信。 这是注释掉加粗代码while循环里的函数之后,代码的信息,串口信息就停在这了。 想了好些天都没有找出问题,希望各位前辈能帮帮忙~( TロT)σ。 |
|
相关推荐
5个回答
|
|
先谢过各位前辈了。
|
|
|
|
搬好小椅子,坐着等ヾ(≧O≦)〃嗷~
|
|
|
|
顶一下
|
|
|
|
怎么没人来呢。。。。
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
7357 浏览 9 评论
2442 浏览 2 评论
为什么我用esp8266做TCP服务器网络调试助手一直连接不上去?
9539 浏览 3 评论
为什么我的ESP8266 AT指令一直返回error无法正常使用?
7381 浏览 0 评论
4198 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:28 , Processed in 0.735644 second(s), Total 52, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号