一、Wi-Fi station 一般情况
WiFi station的工作流程参考ESP-IDF编程指南中的API指南的WiFi模块ESP32 WiFi station一般情况在不同阶段都有具体的描述。
二、WiFi station工作流程
在ESP-IDF下copy出/home/andy/esp/esp-idf/examples/wifi/getting_started/station,此demo连接到路由器。整个demo都是在调用ESP-IDF提供的接口,整个过程如下:
1、主程序
void app_main(void)
{
//Initialize NVS
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA!!!!");
wifi_init_sta();
}
在main函数中对nvs进行初始化用于保存路由器信息,然后进入wifi_init_sta();函数连接到路由器
2、WiFi连接函数
WiFi连接函数大致分为三个阶段:1. Wi-Fi/LwIP 初始化阶段;2. Wi-Fi 配置阶段;3. Wi-Fi 启动阶段
具体过程在相关函数后注释了一些,细节还是看看乐鑫文档
void wifi_init_sta(void)
{
s_wifi_event_group = xEventGroupCreate();
//1. Wi-Fi/LwIP 初始化阶段
ESP_ERROR_CHECK(esp_netif_init());//初始化LwIP,创建LwIP核心任务并初始化与LwIP相关的工作。
printf("sequence1.\n");
ESP_ERROR_CHECK(esp_event_loop_create_default());//创建一个系统事件任务,并初始化应用程序事件的回调函数
esp_netif_create_default_wifi_sta();//创建有 TCP/IP 堆栈的默认网络接口实例绑定 station
printf("sequence2.\n")