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 ( “rn正在配置8266rn” );//向串口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 ( “rn配置ESP8266 OKrn” );
while (1)//无限循环
{
ESP8266_Send_AT_Cmd ( “AT+CIPSTATUS”, “ok”, 0, 1000 );//查看链接状态
if(strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, links))//如果有链接
{
printf ( “rn有客户端连接rn” );
UserCmd=“mhmx”;//客户端发来的命令字符串,可以是中文“开启”,“关闭”等
if(ESP8266_QL(UserCmd))//如果命令字符串匹配执行下列代码
{
printf ( “rn接收到指令rn” );//
//这里可以添加自己需要的代码,比如打开LED,或某个引脚的电平
sprintf (str,“智能家居启动完成rn” );
ul = strlen ( str );
ESP8266_SendString ( DISABLE, str, ul, MulTIple_ID_0 );//向客户端发数据
delay_ms (1000);
}
else//接收到的字符串不匹配
{
printf ( “rn无有效命令rn” );
}
}
else//没有链接
{
printf ( “rn无客户端连接rn” );
}
//以下代码为检测是否和wifi失去连接,如果丢失连接,就重新连接。
if(TcpClosedFlag) //检查标志位
{
//ESP8266_ExitUnvarnishSend(); //退出透传模式,如有需要去掉//
do
{
res = ESP8266_Get_LinkStatus(); //获取链接状态
}
while(!res);//如果为0,获取状态失败,一直获取
if(res == 4) //4表示失去连接
{
printf ( “rn正在重新连接rn” );
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 ( “rn重新连接成功rn” );
}
//while(!ESP8266_UnvarnishSend());//重新启动透传,如果需要去掉//
}
}
}
上一篇:基于STM32单片机FSMC协议分析
下一篇:STM32F103之IAR调试配置
推荐阅读最新更新时间:2024-11-12 13:18
设计资源 培训 开发板 精华推荐
- 使用 Infineon Technologies AG 的 IRU3072 的参考设计
- ANH009:AP1301/2/4/5应用板手动单线圈风扇电机全波驱动
- LT6656BIDC-3、3V 精密电流和升压电压基准的典型应用
- ADA4075-2ARZ-RL 低功耗运算放大器的典型 DAC 输出滤波器电路(差分)
- ADR430A 2.048 Vout 超低噪声 XFET 电压基准的典型应用,具有灌电流和拉电流能力
- LT6656ACS6-3、3V 扩展电源范围电压基准的典型应用
- AD8531ARZ-REEL A 单电源、2 路有源分频器的典型应用
- 【训练营_进阶班】基于阿里云智能的插座
- 使用 ROHM Semiconductor 的 BD60GA5WEFJ 的参考设计
- 具有 300mA 输出电流限制和输入欠压锁定功能的 24V 稳压器