8266station初始化和智能配网问题

摘要:
若然,把1秒定时改成3秒(或更多)就不会出现这种情况了.

代码思路是:

    //station
    //Esp8266_Station_mode_init();
    wifi_set_opmode(STATION_MODE); //Station_mode


    //定时器任务创建
    Esp8266_Timer1_init(1000,1);    //1000ms, 1:重复定时
/** timer1 init **/ICACHE_FLASH_ATTR
voidEsp8266_Timer1_init(u32 mstime, u8 mode)
{
    os_timer_disarm(&K_Timer01); //先关闭定时器
    os_timer_setfn(&K_Timer01,(os_timer_func_t *)K_Timer01_cb,NULL);
    os_timer_arm(&K_Timer01, mstime, mode);

}
/*Timer1回调函数 */ICACHE_FLASH_ATTR
void K_Timer01_cb(void)
{
    u8 K_WIFI_STA_Connect;            //表示wifi当前的连接状态
    structip_info ap_ip_info;
    u8 ESP8266_IP[4];
    u8 K_LED_Flash = 0;
    K_WIFI_STA_Connect =wifi_station_get_connect_status();

    if(K_WIFI_STA_Connect == STATION_GOT_IP)    //如果已经连接wifi
{
        wifi_get_ip_info(STATION_IF,&ap_ip_info);
        ESP8266_IP[0] =ap_ip_info.ip.addr;
        ESP8266_IP[1] = ap_ip_info.ip.addr>>8;
        ESP8266_IP[2] = ap_ip_info.ip.addr>>16;
        ESP8266_IP[3] = ap_ip_info.ip.addr>>24;

        os_printf("ESP8266_IP:%d.%d.%d.%d
",ESP8266_IP[0],ESP8266_IP[1],ESP8266_IP[2],ESP8266_IP[3]);

        //OLED_SHOW
        for(;K_LED_Flash <=5; K_LED_Flash++)
        {
            GPIO_OUTPUT_SET(GPIO_ID_PIN(4),(K_LED_Flash%2));
            delay_ms(100);
        }
        os_printf("ESP8266 Connect Wifi success! 
");
        os_timer_disarm(&K_Timer01);//关闭定时器,

        ESP8266_SNTP_Init();        //连接服务器
}
    else if(K_WIFI_STA_Connect == STATION_NO_AP_FOUND ||        //如果未能连接wifi,进入智能配网模式
            K_WIFI_STA_Connect == STATION_WRONG_PASSWORD ||K_WIFI_STA_Connect ==STATION_CONNECT_FAIL )
    {
        os_timer_disarm(&K_Timer01);//关闭定时器, 进入配网模式

        //wifi_set_opmode(STATION_MODE);
smartconfig_set_type(SC_TYPE_AIRKISS);
        smartconfig_start(ESP8266_Smartconfig_Cb);

    }
    elseos_printf("uknow error
");

    //ESP8266_NetConnect_Init();     //TCP
}

8266上电后进入配网模式.

1.先设置成station模式

2.然后进入1秒重复定时器

3.在定时器的回调函数中定义:

如果flash中保存的wifi 可以连接就自动连接

如果无法连接就进入配网模式.

那么问题来了,在家里测试的时候,很正常,但是在公司测试的时候,

8266的状态都不是STATION_NO_AP_FOUND,STATION_NO_AP_FOUND,STATION_CONNECT_FAIL

而是IDLE模式. 百度无果.

后来仔细想了想,好像并没有看到扫描wifi结束的提示

8266station初始化和智能配网问题第1张

于是我有了一个大胆的猜测

1秒定时器,1秒定时器,如果没有进入配网模式,在一秒之后就会重新复位,那么 1秒真的就够了吗?

若然,把1秒定时改成3秒(或更多)就不会出现这种情况了.

免责声明:文章转载自《8266station初始化和智能配网问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何接地气地接入微前端?利用 clipboardData 在网页中实现截屏粘贴的功能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转:Linux 编译安装 Mysql5.7

http://broqiang.com/2017/04/18/Mysql-Install-5.7.18-Linux-Compile/ 原文 Linux 编译安装 Mysql5.7 Ubuntu 下快速安装直接 apt 方式即可, 一般的开发环境也足够了 个人比较喜欢新版本,一般有新版本就会尝试一下 此文档适用于 Ubuntu 16.10 和 CentOS...

Windows程序运行原理 之 WNDCLASS详解

#include <windows.h>#include <stdio.h>//包含应用程序中数据类型和数据结构的定义LRESULT CALLBACK WinSunProc(  HWND hwnd,      // handle to window  UINT uMsg,      // message identifier  WP...

JAVA 上加密算法的实现用例,MessageDigest介绍

第 1 章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密。 通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难。但是加密的安全性依靠密钥保管的安全性 , 在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题,并且如果在多用户的情况下密钥的保管安全性也...

mui 注意事项

1>一切内容都要包裹在mui-content中 顶部导航栏(.mui-bar-nav)、底部工具条(.mui-bar-footer)、底部选项卡(.mui-bar-tab)放在.mui-content之前,否则固定栏会遮住部分主内容; 2>始终为button按钮添加type属性 若button按钮没有type属性,浏览器默认按照type=sub...

用Gitolite搭建服务器上的Git

使用git作为版本控制工具,确实非常流行且好用,常用的git代码服务器有Github还是国内的Gitcafe和OSC都是很不错,可以免费存放一些开源的项目代码,对于私人项目,则需要支付一定的费用。同时对于代码安全隐私的考虑,有时需要搭建自己的私有git服务器,官方wiki有介绍,这里在整理一遍自己的搭建过程,供之后参看。 安装基础依赖包 1 # yum...

收录 Uboot 详解

--------------------------------------------------------------------------------------------------------  我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。     在PC机上引导程序一般...