8266station初始化和智能配網問題


代碼思路是:

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


    //定時器任務創建
    Esp8266_Timer1_init(1000,1);    //1000ms, 1:重復定時
/** timer1 init **/
ICACHE_FLASH_ATTR
void Esp8266_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當前的連接狀態
    struct ip_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\n",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! \n");
        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);

    }
    else
        os_printf("uknow error\n");

    //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結束的提示

於是我有了一個大膽的猜測

1秒定時器,1秒定時器,如果沒有進入配網模式,在一秒之后就會重新復位,那么 1秒真的就夠了嗎?

 

若然,把1秒定時改成3秒(或更多)就不會出現這種情況了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM