×
单片机 > 单片机程序设计 > 详情

ESP8266和STM32的程序代码

发布时间:2020-08-21 发布时间:
|

ESP8266模块在STM32上做Server时,外部对其端口进行收发数据的程序,大部分代码都备注了说明。

因为是从client代码改来的,所以函数名不去改它了。

#include "sta_tcpclent_test.h"

#include "SysTick.h"

#include "usart.h"

#include "esp8266_drive.h"

#include  

#include  

volatile u8 TcpClosedFlag = 0;//定义失去连接标志

void ESP8266_STA_TCPClient_Test(void)

{

u8 res;

u32 ul=0;

char str[100]={0},*links,*UserCmd;//links为检测连接字符串变量,usercmd为用户命令字符串变量

printf ( " 正在配置8266 " );//向串口1发消息

        links="STATUS:3";//STATUS=2表示无连接,=3为有连接

ESP8266_CH_PD_Pin_SetH;//设置CH_PD为高电平

ESP8266_AT_Test();//AT测试

ESP8266_Net_Mode_Choose(STA_AP);//选择模式

while(!ESP8266_JoinAP(User_ESP8266_SSID,User_ESP8266_PWD));//连接外部wifi,

        ESP8266_Enable_MultipleId (ENABLE );//设置多链接

while(!ESP8266_StartOrShutServer ( ENABLE, "8266", "2000" ));//开启服务器和端口

printf ( " 配置ESP8266 OK " );

while (1)//无限循环

{

ESP8266_Send_AT_Cmd ( "AT+CIPSTATUS", "ok", 0, 1000 );//查看链接状态

if(strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, links))//如果有链接

                 { 

  printf ( " 有客户端连接 " );

   UserCmd="mhmx";//客户端发来的命令字符串,可以是中文“开启”,“关闭”等

  if(ESP8266_QL(UserCmd))//如果命令字符串匹配执行下列代码

                   { 

    printf ( " 接收到指令 " );//

     //这里可以添加自己需要的代码,比如打开LED,或某个引脚的电平

     sprintf (str,"智能家居启动完成 " );

     ul = strlen ( str );

     ESP8266_SendString ( DISABLE, str, ul, Multiple_ID_0 );//向客户端发数据

     delay_ms (1000);

  }

  else//接收到的字符串不匹配

  {

      printf ( " 无有效命令 " );

  }

   

}

else//没有链接

   {

       printf ( " 无客户端连接 " );

    }

 

//以下代码为检测是否和wifi失去连接,如果丢失连接,就重新连接。

if(TcpClosedFlag) //检查标志位

 {

//ESP8266_ExitUnvarnishSend(); //退出透传模式,如有需要去掉//

do

{

res = ESP8266_Get_LinkStatus();     //获取链接状态

}

while(!res);//如果为0,获取状态失败,一直获取

if(res == 4)                     //4表示失去连接

{

printf ( " 正在重新连接 " );

while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );

while(!ESP8266_Enable_MultipleId (ENABLE ));

while(!ESP8266_StartOrShutServer ( ENABLE, "8266", "500" ));

//while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0 ) );//如果8266是client模式,去掉//启用此代码

printf ( " 重新连接成功 " );

 //while(!ESP8266_UnvarnishSend());//重新启动透传,如果需要去掉//

 }

 }

 

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址