你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

简单的状态机框架,让所有人快玩转WIFI以及GPRS模块  

[复制链接]
技术范儿 发布时间:2016-11-21 13:40
     前段时间,在NXP帮别人简单的封装了一套ESP8266的WIFI的库,直接用的AT指令挂到单片机上面跑的,临时做的用的是STA模式,TCPClient,由于买的模块各种问题(市面上很多ESP8266的模块,买回来请注意把指令都测试一下),连不上路由,在社区共享给后也没有人提出反馈。。。。。。所以临时就这么搁置了,指令通过串口测试了各个状态之间切换正常。不保**完没有BUG,但是提供了一个简洁的状态机框架,轻松改下即可用到GPRS、蓝牙等加他AT指令集的模块,希望对大家有帮助

ESP8266.zip

下载

12.23 KB, 下载次数: 583

源代码

收藏 3 评论23 发布时间:2016-11-21 13:40

举报

23个回答
会飞的雪花 回答时间:2017-9-22 22:35:11
void ESP8266HalRevData(uint8_t inPut)
{
      
        if(ESP8266Step.Step < IDLE)
        {
                ESP8266Step.ReveBuff[ESP8266Step.HalRevSize++] = inPut;
        if(ESP8266Step.HalRevSize == MAXREVESIZE)
        {
            memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);
            ESP8266Step.HalRevSize = 0;
        }
        }
        else if(ESP8266Step.Step >= IDLE)
        {
        TCPTransmission.TcpRxBuff[TCPTransmission.TcpRxSize++] = inPut;


            TCPTransmission.TcpRevTime = GetTime();
        TCPTransmission.RevFlag = 0xff;
        }
               
}
//接收数量没做限制,有数组越界风险。
//增加限制及处理
新代码如下
void ESP8266HalRevData(uint8_t inPut)
{
      
        if(ESP8266Step.Step < IDLE)
        {
                ESP8266Step.ReveBuff[ESP8266Step.HalRevSize++] = inPut;
        if(ESP8266Step.HalRevSize == MAXREVESIZE)
        {
            memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);
            ESP8266Step.HalRevSize = 0;
        }
        }
        else if(ESP8266Step.Step >= IDLE)
        {
        TCPTransmission.TcpRxBuff[TCPTransmission.TcpRxSize++] = inPut;
                    if(TCPTransmission.TcpRxSize >= MAXREVESIZE)
        {
            memset(ESP8266Step.ReveBuff,0,MAXREVESIZE);
            TCPTransmission.TcpRxSize = 0;
                                          TCPTransmission.RevFlag = 0;
        }
                                else
                                {
                                        TCPTransmission.TcpRevTime = GetTime();
          TCPTransmission.RevFlag = 0xff;
                                }             
        }               
}

欢迎批评指正

技术范儿 回答时间:2016-11-21 13:58:39
zhangxu56726 发表于 2016-11-21 13:53
请问,你的这个能连上路由吗?

这套是我根据买的模块测试的一个流程。我的模块偶尔可以连上,连不上的时候咋都连不上,不知道是不是模块问题,你可以试试,有BUG就自己改吧,年底了项目紧没时间折腾了
liuxy236@tom.co 回答时间:2016-11-21 22:37:27
好东西,顶                       
zhangxu56726 回答时间:2016-11-21 13:53:20
请问,你的这个能连上路由吗?
mhl920 回答时间:2016-11-21 16:16:22
谢谢分享
peter001 回答时间:2016-11-22 00:49:11
谢谢分享
zengyi703-16313 回答时间:2016-11-22 07:12:28
谢楼主分享
sun2005 回答时间:2016-11-22 08:21:24
谢谢!分享
andypanfan 回答时间:2016-12-15 19:37:21
谢谢分享
huaiqiao 回答时间:2016-12-15 20:51:23
改天用esp8266的小黄板看看呢
scx111 回答时间:2017-3-2 16:44:54
谢谢分享
zbber 回答时间:2017-3-2 20:46:10
谢谢分享,谢谢楼主,支持分享
yoghen 回答时间:2017-7-27 11:19:14
AT 指令不使用状态机,则同时处理的功能就比较单一。使用状态机,我又头大。谢谢分享
me浩 回答时间:2017-7-27 11:47:56

谢谢分享
会飞的雪花 回答时间:2017-9-22 20:32:45
感谢,这个状态机我看懂了,非常的全面。
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版