OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2826|回复: 0

谁帮我看看这是咋回事??每次执行都只执行AT、AT+CWMODE=3、AT+RST,后面的就不动了,还一直循环

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-3-17
在线时间
5 小时
发表于 2020-4-30 15:19:17 | 显示全部楼层 |阅读模式
//ESP8266Ä£¿éoíPC½øèëí¸′«Ä£ê½
void esp8266_start_trans(void)
{
        OLED_Init();
        OLED_Clear();
        esp8266_send_cmd("AT","OK",50);
        OLED_ShowString(6,0,"0",8);
        delay_ms(1000);
        OLED_Clear();
        //éèÖÃ1¤×÷Ä£ê½ 1£ostationģ꽠  2£oAPģ꽠 3£o¼æèY AP+stationÄ£ê½
        esp8266_send_cmd("AT+CWMODE=3","OK",50);
        OLED_ShowString(6,0,"1",8);
        delay_ms(1000);
        OLED_Clear();
        //èÃWifiÄ£¿éÖØÆôμÄÃüáî
        esp8266_send_cmd("AT+RST","OK",20);
        OLED_ShowString(6,1,"2",8);
        delay_ms(1000);
        OLED_Clear();
        delay_ms(1000);         //Ñóê±3Sμè′yÖØÆô3é1|
        delay_ms(1000);
        delay_ms(1000);
       
        //èÃÄ£¿éᬽóéÏ×Ô¼oμÄ·óé

        while(esp8266_send_cmd("AT+CWJAP=\"lege\",\"hujiale19980801\"","WIFI GOT IP",300));
        OLED_ShowString(6,2,"3",8);
        delay_ms(1000);
        OLED_Clear();
        //=0£oμ¥·ᬽóģ꽠    =1£o¶à·ᬽóÄ£ê½
        esp8266_send_cmd("AT+CIPMUX=0","OK",20);
        OLED_ShowString(6,3,"4",8);
       
        //½¨á¢TCPᬽó  ÕaËÄÏî·Ö±e′ú±íáË òaᬽóμÄIDoÅ0~4   á¬½óààDí  Ô¶3ì·tÎñÆ÷IPμØÖ·   Ô¶3ì·tÎñÆ÷¶Ë¿úoÅ
        while(esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.0.105\",8080","OK",200));
        OLED_ShowString(6,4,"5",8);
        delay_ms(1000);
        OLED_Clear();
        //êÇ·ñ¿aÆôí¸′«Ä£ê½  0£o±íê¾1Ø±Õ 1£o±í꾿aÆôí¸′«
        esp8266_send_cmd("AT+CIPMODE=1","OK",200);
        OLED_ShowString(6,5,"6",8);
        delay_ms(1000);
        OLED_Clear();
        //í¸′«Ä£ê½Ï ¿aê¼·¢Ëíêy¾YμÄÖ¸áî Õa¸öÖ¸áîÖ®oó¾í¿éòÔÖ±½ó·¢êy¾YáË
        esp8266_send_cmd("AT+CIPSEND","OK",200);
        OLED_ShowString(6,6,"7",8);
}


//ESP8266íË3öí¸′«Ä£ê½   ·μ»ØÖμ:0,íË3ö3é1|;1,íË3öê§°ü
//ÅäÖÃwifiÄ£¿é£¬í¨1yÏëwifiÄ£¿éá¬Dø·¢Ëí3¸ö+£¨Ã¿¸ö+oÅÖ®¼ä 3¬1y10ms,ÕaÑùèÏÎaêÇá¬Døèy′η¢Ëí+£©
u8 esp8266_quit_trans(void)
{
        u8 result=1;
        u3_printf("+++");
        delay_ms(1000);                                        //μè′y500msì«éù òa1000ms2Å¿éòÔíË3ö
        result=esp8266_send_cmd("AT","OK",20);//íË3öí¸′«ÅD¶Ï.
        if(result)
                printf("quit_trans failed!");
        else
                printf("quit_trans success!");
        return result;
}


//ÏòESP8266·¢ËíÃüáî
//cmd:·¢ËíμÄÃüáî×Ö·û′®;ack:Æú′yμÄó|′e½á1û,èç1ûÎa¿Õ,Ôò±íê¾2»Dèòaμè′yó|′e;waittime:μè′yê±¼ä(μ¥λ:10ms)
//·μ»ØÖμ:0,·¢Ëí3é1|(μÃμ½áËÆú′yμÄó|′e½á1û);1,·¢Ëíê§°ü
u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
        u8 res=0;
        USART3_RX_STA=0;
        u3_printf("%s\r\n",cmd);        //·¢ËíÃüáî
        if(ack&&waittime)                //Dèòaμè′yó|′e
        {
                while(--waittime)        //μè′yμ1¼Æê±
                {
                        delay_ms(10);
                        if(USART3_RX_STA&0X8000)//½óêÕμ½Æú′yμÄó|′e½á1û
                        {
                                if(esp8266_check_cmd(ack))
                                {
                                        printf("ack:%s\r\n",(u8*)ack);
                                        break;//μÃμ½óDD§êy¾Y
                                }
                                        USART3_RX_STA=0;
                        }
                }
                if(waittime==0)res=1;
        }
        return res;
}


//ESP8266·¢ËíÃüáîoó,¼ì2a½óêÕμ½μÄó|′e
//str:Æú′yμÄó|′e½á1û
//·μ»ØÖμ:0,ûóDμÃμ½Æú′yμÄó|′e½á1û;ÆäËû,Æú′yó|′e½á1ûμÄλÖÃ(strμÄλÖÃ)
u8* esp8266_check_cmd(u8 *str)
{
        char *strx=0;
        if(USART3_RX_STA&0X8000)                //½óêÕμ½ò»′Îêy¾YáË
        {
                OLED_ShowString(0,2,USART3_RX_BUF,8);
                USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//ìí¼ó½áêø·û
                strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
                OLED_ShowString(0,6,strx,8);
        }
        return (u8*)strx;
}


//ÏòESP8266·¢Ëíêy¾Y
//cmd:·¢ËíμÄÃüáî×Ö·û′®;waittime:μè′yê±¼ä(μ¥λ:10ms)
//·μ»ØÖμ:·¢Ëíêy¾Yo󣬷tÎñÆ÷μÄ·μ»ØÑéÖ¤Âë
u8* esp8266_send_data(u8 *cmd,u16 waittime)
{
        char temp[5];
        char *ack=temp;
        USART3_RX_STA=0;
        u3_printf("%s",cmd);        //·¢ËíÃüáî
        if(waittime)                //Dèòaμè′yó|′e
        {
                while(--waittime)        //μè′yμ1¼Æê±
                {
                        delay_ms(10);
                        if(USART3_RX_STA&0X8000)//½óêÕμ½Æú′yμÄó|′e½á1û
                        {
                                USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//ìí¼ó½áêø·û
                                ack=(char*)USART3_RX_BUF;
                                printf("ack:%s\r\n",(u8*)ack);
                                USART3_RX_STA=0;
                                break;//μÃμ½óDD§êy¾Y
                        }
                }
        }
        return (u8*)ack;
}

u8 esp8266_receive_data(){
        u8* str;
        USART3_RX_STA=0;

                        str=USART3_RX_BUF;
        return *str;
}

运行结果

运行结果
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 04:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表