ESP8266和STM32的程序代码

发布者:梅花居士最新更新时间:2017-10-30 来源: eefocus关键字:ESP8266  STM32  程序代码 手机看文章 扫描二维码
随时随地手机看文章

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 ( "\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());//重新启动透传,如果需要去掉//

 }

 }

 

}


关键字:ESP8266  STM32  程序代码 引用地址:ESP8266和STM32的程序代码

上一篇:STM32F103 ZET6和C8T6程序移植
下一篇:stm32学习1跑马灯程序之寄存器版本

推荐阅读最新更新时间:2024-03-16 15:42

STM32固件库3.3版本在STM3210e-eval开发板上的移植
首先建立工程,我习惯性在工程文件夹下建立以下几个文件夹,分别放不同的文件,以区别不同文件的不同作用,方便寻找和移植。如下: 在PROJECT文件夹下建立工程项目,启动keil,开始建立工程。 注意建立在PROJECT文件夹下。 随便起个名字,我起的名字是MDK,建立后,会提示你选择器件型号 我的器件如上图,所以选择。确定后会询问你是否加入启动文件。我们用stm32的固件库,所以不用mdk的,选择否。 下面配置工程的选项option,右键点Target会看到Options。 以下是各个选项卡的配置内容。 这里注意的是在output选项卡里要选择目标文件存放的位置,
[单片机]
<font color='red'>STM32</font>固件库3.3版本在STM3210e-eval开发板上的移植
STM32定时器基本计数原理解析
概述 STM32的TIM定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道STM32最基本的计数原理。 虽然STM32定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少us、ms等。 接下来我会讲述关于STM32最基本的计数原理,详细讲述如何做到(配置)计数1us的延时,并提供实例代码供大家参考学习。 TIM计数原理描述 定时器可以简单的理解为:由计数时钟(系统时钟或外部时钟)一个一个计数,直到计数至我们设定的值,这个时候产生
[单片机]
<font color='red'>STM32</font>定时器基本计数原理解析
完成stm32上HID的应用
这个是公司的项目,以前基于usb的虚拟串口来做上下位机通信,由于usb平时也就刷参数和调试之用,也不很常用,外面反应usb有时会连不上stm32控制器,心里一直认为不是大问题,后来反应的多了,就重视这个事情了,虽然usb平时不用,但是用的时候只要出现异常掉线,就再也连不上去了,特别影响用户对我们产品的信心。 在网上找了很多资料,到现在也只能隐约确定是stm32官方的虚拟串口库有问题,我发现不同的电源板都会影响到usb虚拟串口的枚举,于是下定决心使用其他方式来做上下位机的连接,排除了usb虚拟串口,眼前的选择只有两个 1)usblib,这个是针对usb的上位机库,可以玩很多的花样,但是需要开发者稍稍熟悉usb协议,而且这个需要在
[单片机]
一种基于STM32的多功能精密电子秤
1、引言 本文采用四片箔式应变片组成一个惠斯登电桥。运用集成芯片HX711对称重传感器的模拟信号进行A/D转换,完成测量数据的采集,后经单片机对数据处理完成高精度的测量,随后加上各种算法,完成多种功能的计算;最后在配合液晶显示,触摸输入,语音播报等完成友好的人机交互。 2、系统组成 根据设计的需求,硬件上需要有称重传感器,AD转换电路,单片机最小系统,按键输入,显示输出,语音播报,以及电源模块,其组成的系统框图如图1。 图1 电子秤系统框图 3、称重传感器的设计 3.1、悬臂梁的设计 采用优质的铝合金材质(长,宽,高分别为:190mm,20mm,3mm),铝合金具有塑造性强,硬度适中,弹性好等特点,常作为电阻应变式称重
[单片机]
一种基于<font color='red'>STM32</font>的多功能精密电子秤
STM32实现DAC输出的相关设置
STM32 DAC简介 大容量的STM32F103具有内部DAC,战舰STM32选择的是STM32F103ZET6属于大容量产品,所以是带有DAC模块的。 STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。 STM32的DAC模块主要特点有: ① 2个DAC转换器:每个
[单片机]
STM32的时钟系统分析(程序)
在 STM32 中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。   ①、HSI是高速内部时钟,RC振荡器,频率为8MHz。   ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。   ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。   ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。   ⑤、PLL为 锁相环 倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。   其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,
[单片机]
STM32学习笔记一一独立看门狗
1.看门狗的作用 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这样的情况的发生。如果系统出问题,没有给看门狗喂狗,看门狗就由于超时将CPU复位。 2.STM32 的独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是在 30~60Khz 之间的一个可变化的时钟。 3.独立看门狗相关寄存器 (1)键值寄存器 IWDG_KR 在键寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值 0xF
[单片机]
<font color='red'>STM32</font>学习笔记一一独立看门狗
stm32初始化三个串口
serial.c #include serial.h int fputc(int ch,FILE *p) //在使用printf时系统自动条用此函数 { USART_SendData(USART2,(u8)ch); while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); return ch; } /******************************************************************************* * 函 数 名 : serial_in
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved