树莓派论坛

 找回密码
 立即注册

ESP8266底层程序

603612492 发表于 2022-3-10 16:30:18 | 显示全部楼层 |阅读模式
#include "public.h"#include "ESP8266.h"#include "usart.h"#include "delay.h"#include "stdio.h"#include "string.h"

/***********************************1:OK2:SEND OK3:CLOSE4:ò»Î»êyêy¾Y5:á½Î»êyêy¾Y6:èyλêyêy¾Y7:·tÎñÆ÷±»á¬½ó8:êÕμ½wifiÃû3ÆoíÃüÂë9:êÕμ½Ãû3ÆoíÃüÂë10:ERROR11;¸′λ12:·μ»Ø>13:í¸′«·μ»Ø14:í¸′«½óêÕíê3é************************************//************************************               ¶¨òåOLED*************************************/u8 Set_Mode[9]="Set Mode\0";u8 Connect_Wifi[13]="Connect Wifi\0";u8 Connect_TCP[12]="Connect TCP\0";u8 Connect_UDP[12]="Connect UDP\0";u8 State[3]="OK\0";u8 Wite[13]="Wite connect\0";u8 Client[7]="Client\0";u8 SSID_PASSWORD[14]="SSID PASSWORD\0";/************************************            APP¿ØÖÆWIFIᬽó*************************************/char CWJAP_APP[100]="AT+CWJAP=";/************************************           Ãüáî·μ»Ø×′ì¬*************************************/int ESP8266_state = 0;
/************************************                                                &#195;üá&#238;·¢&#203;íoˉêy*************************************/void SEND_Order(char* order){        int i;        for(i=0; i < strlen(order); i++)          {                  USART_SendData(USART1,order[i]);                  while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == Bit_RESET);        }}/************************************                                                  í&#203;3&#246;í&#184;′&#171;*************************************/void SEND_EN_EXIT(void){        delay_ms(100);        SEND_Order(CIPSEND_EXIT);        delay_ms(100);}/************************************                                                í&#184;′&#171;·¢&#203;íoˉêy*************************************/void SEND_EN_Order(char *data){        SEND_Order(data);        ESP8266_state = 0;}/************************************                                        ·&#199;í&#184;′&#171;·¢&#203;íoˉêy*************************************/void SEND_DIS_Order(char *data,char *len){        char buff[20]="";        strcat(buff,CIPSEND_Dis);        strcat(buff,len);        strcat(buff,EXIT);        SEND_Order(buff);        while(ESP8266_state !=1);        ESP8266_state = 0;        SEND_Order(data);        while(ESP8266_state != 2);        ESP8266_state = 0;}/************************************                                êy&#190;Y·¢&#203;í&#196;£ê&#189;éè&#214;&#195;        0:·&#199;í&#184;′&#171;&#196;£ê&#189;        1:í&#184;′&#171;&#196;£ê&#189;*************************************/void Send_Mode(int S_Mode){        switch(S_Mode)        {                case 0:    //·&#199;í&#184;′&#171;                        SEND_Order(CIPMODE_Dis);                        while(ESP8266_state != 1);                        ESP8266_state = 0;                break;                case 1:    //í&#184;′&#171;                        SEND_Order(CIPMODE_EN);                        while(ESP8266_state != 1);                        ESP8266_state = 0;                        SEND_Order(CIPSEND_EN);                        delay_ms(10);                break;                default: break;        }}/************************************                                1ì&#182;¨wifi3&#245;ê&#188;&#187;ˉoˉêy*************************************/void esp8266_config(void)                                              //ESP82663&#245;ê&#188;&#187;ˉ{        SEND_Order(ATE);        while(ESP8266_state != 1);        ESP8266_state = 0;        //        OLED_ShowString(0,0,Set_Mode,12);        Draw_Font16B(0,10,BLUE,Set_Mode);        SEND_Order(mode);        while(ESP8266_state != 1);        ESP8266_state = 0;//        OLED_ShowString(0,1,State,12);        Draw_Font16B(0,30,BLUE,State);        //        OLED_ShowString(0,2,Connect_Wifi,12);        Draw_Font16B(0,50,BLUE,Connect_Wifi);        SEND_Order(CWJAP);        while(ESP8266_state != 1);        ESP8266_state = 0;//        OLED_ShowString(0,3,State,12);        Draw_Font16B(0,70,BLUE,State);
//        OLED_ShowString(0,4,Connect_TCP,12);        Draw_Font16B(0,90,BLUE,Connect_TCP);        SEND_Order(CIPSTART_TCP);        while(ESP8266_state != 1);        ESP8266_state = 0;//        OLED_ShowString(0,5,State,12);        Draw_Font16B(0,110,BLUE,State);}/************************************                        APP&#191;&#216;&#214;&#198;wifiá&#172;&#189;ó3&#245;ê&#188;&#187;ˉoˉêy*************************************/void esp8266_config_APP(void){        char symbol[7] = "\"\",\"\"\r\n";        int SSID_PASSWORD_COUNT=10;        int data_count=0;        SEND_Order(ATE);        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(mode_APP);        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(CIPAP);        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(CWSAP);        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(CIPMUX_EN);        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(CIPSERVER_EN);                         //éè&#214;&#195;&#206;aTCP·t&#206;&#241;&#198;÷        while(ESP8266_state!=1);        ESP8266_state=0;        while(1)        {//                OLED_ShowString(0,0,Wite,12);                if(ESP8266_state==7)                {                        delay_ms(1000);                        ESP8266_state=0;//                        OLED_ShowString(0,1,Client,12);                }                if(ESP8266_state==9)                {                        ESP8266_state=0;//                        OLED_ShowString(0,2,SSID_PASSWORD,12);                        break;                }        }        CWJAP_APP[9]=symbol[0];        while(1)        {                CWJAP_APP[SSID_PASSWORD_COUNT] = json_data[data_count];                SSID_PASSWORD_COUNT++;                data_count++;                if(json_data[data_count]==',')                {                        CWJAP_APP[SSID_PASSWORD_COUNT]=symbol[1];                        CWJAP_APP[SSID_PASSWORD_COUNT+1]=symbol[2];                        CWJAP_APP[SSID_PASSWORD_COUNT+2]=symbol[3];                        data_count++;                        SSID_PASSWORD_COUNT+=3;                }                if(data_count == count_flag)                {                        CWJAP_APP[SSID_PASSWORD_COUNT] = symbol[4];                        CWJAP_APP[SSID_PASSWORD_COUNT+1] = symbol[5];                        CWJAP_APP[SSID_PASSWORD_COUNT+2] = symbol[6];                        CWJAP_APP[SSID_PASSWORD_COUNT+3] = '\0';                        break;                }        }        ESP8266_state=0;        SSID_PASSWORD_COUNT=10;        data_count=0;                SEND_Order(CIPSERVER_DIS);                         //éè&#214;&#195;&#206;a·&#199;TCP·t&#206;&#241;&#198;÷        while(ESP8266_state != 1);        ESP8266_state = 0;                SEND_Order(RST);                                   //&#184;′&#206;&#187;        while(ESP8266_state != 1);        ESP8266_state = 0;        delay_ms(1000);                SEND_Order(CIPMUX_DIS);                            //éè&#214;&#195;·&#199;&#182;àá&#172;&#189;ó        while(ESP8266_state != 1)        ESP8266_state = 0;                SEND_Order(ATE);        while(ESP8266_state != 1);        ESP8266_state = 0;                ESP8266_state = 0;        SEND_Order(mode);        while(ESP8266_state != 1);        ESP8266_state = 0;        //        OLED_ShowString(0,3,Connect_Wifi,12);        SEND_Order(CWJAP_APP);        while(ESP8266_state != 1);        ESP8266_state = 0;//        OLED_ShowString(0,4,State,12);
//        OLED_ShowString(0,5,Connect_TCP,12);        SEND_Order(CIPSTART_TCP);        while(ESP8266_state != 1);        ESP8266_state = 0;//        OLED_ShowString(0,6,State,12);}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )