访问电脑版页面

导航:老古开发网手机版STM32单片机编程

基于ESP8266和STM32单片机的程序代码编写

导读:
关键字:
ESP8266,STM32单片机,程序代码,

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

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

基于ESP8266和STM32单片机的程序代码编写

#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 ( “\r\n正在配置8266\r\n” );//向串口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 ( “\r\n配置ESP8266 OK\r\n” );

while (1)//无限循环

{

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

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

{

printf ( “\r\n有客户端连接\r\n” );

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

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

{

printf ( “\r\n接收到指令\r\n” );//

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

sprintf (str,“智能家居启动完成\r\n” );

ul = strlen ( str );

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

delay_ms (1000);

}

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

{

printf ( “\r\n无有效命令\r\n” );

}

}

else//没有链接

{

printf ( “\r\n无客户端连接\r\n” );

}

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

if(TcpClosedFlag) //检查标志位

{

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

do

{

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

}

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

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

{

printf ( “\r\n正在重新连接\r\n” );

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 ( “\r\n重新连接成功\r\n” );

}

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

}

}

}

来源:未知   作者:工程师周亮  2018/10/25 15:12:00
栏目: [ STM32单片机编程]

相关阅读

基于ESP8266和STM32单片机的程序代码编写

STM32使用Flash存储器当作EEPROM来保持数据

STM32F30X USART串口初始化顺序

STM32关于USART的使用笔记

如何将STM32单片机中的函数调用到入口参数

意法半导体(ST)与软件设计公司合作研发软件开发工具,为STM32微控制器用户提供最佳的免费开发环境

STM32单片机位带操作的原理解析

如何设置STM32单片机非初始化数据变量不被零初始化

STM32单片机的断言机制函数assert_param解析

STM32的DMA演示,USART

STM32单片机PID算法的原则及应用方法

printf重定向到stm32串口

STM32 控制lcm液晶ILI9341驱动的液晶驱动程序

意法半导体的优化代码协助设计人员发挥STM32微控制器的最大潜力

STM32单片机设计extern全局变量的定义解析

详解STM32的位带操作

基于STM32F4的 C++封装(完整代码)

STM32 使用DMA+DAC+TIMER 输出正弦波

stm32 打印数据到PC串口

基于PIC单片机花样彩灯控制器程序设计