2017-05-08 145 views

回答

0

,你需要配置一個任務內的ESP上user_init()函數,並調用函數sdk_wifi_station_get_connect_status()

#include "espressif/esp_common.h" 
#include "esp/uart.h" 
#include "FreeRTOS.h" 
#include "task.h" 
#include "ssid_config.h" 
#include "esp8266.h" 
void task1(void *pvParameters) 
{ 
    while (1) 
    { 
     check_wifi_connection(); 
    } 
} 
void check_wifi_connection() 
{ 
    uint8_t status = sdk_wifi_station_get_connect_status(); 
    while (status != STATION_GOT_IP) 
    { 
     status = sdk_wifi_station_get_connect_status(); 
     vTaskDelay(ONE_SEC/portTICK_PERIOD_MS); 
     switch (status) 
     { 
     case STATION_WRONG_PASSWORD: 
      printf("WiFi: wrong password\n\r"); 
      break; 
     case STATION_NO_AP_FOUND: 
      printf("WiFi: AP not found\n\r"); 
      break; 
     case STATION_CONNECT_FAIL: 
      printf("WiFi: connection failed\r\n"); 
      break; 
     case STATION_GOT_IP: 
      break; 
     default: 
      printf("%s: status = %d\n\r", __func__, status); 
      break; 
     } 
    } 
} 
void user_init(void) 
{ 
    uart_set_baud(0, BAUDRATE); 
    sdk_wifi_set_opmode(STATION_MODE); 
    sdk_wifi_station_set_auto_connect(true); 
    sdk_wifi_station_set_config(&config);// my config that 
    gpio_enable(gpio, GPIO_INPUT); 
    tsqueue = xQueueCreate(2, sizeof(uint32_t)); 
    xTaskCreate(&task1, 
       "task1", 
       2048, 
       NULL, 
       tskIDLE_PRIORITY, 
       &task_handler); 
}