代码:
#include <stdio.h>
#include "nvs_flash.h"
#include "esp_event.h"
#include "esp_netif.h"
#include "esp_wifi.h"
uint8_t connect_count = 0;
//esp_event_handler_t
void wifi_callback(void* event_handler_arg,esp_event_base_t event_base,int32_t event_id,void* event_data)
{
//WIFI启动成功
if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START)
{
esp_wifi_connect();
}
//WIFI连接失败
if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED)
{
connect_count++;
if(connect_count<=5)
{
esp_wifi_connect();
}
else
{
printf("WIFI连接失败\n");
}
}
//STA成功介入热点并且获取到了IP
if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
{
printf("STA成功接入热点\n");
ip_event_got_ip_t* info = (ip_event_got_ip_t*)event_data;
printf("STA的IP是"IPSTR"\n",IP2STR(&info->ip_info.ip));
}
}
void app_main(void)
{
nvs_flash_init();
//默认事件循环
esp_event_loop_create_default();
//注册事件
esp_event_handler_instance_register(WIFI_EVENT,WIFI_EVENT_STA_START,wifi_callback,NULL,NULL);
esp_event_handler_instance_register(WIFI_EVENT,WIFI_EVENT_STA_DISCONNECTED,wifi_callback,NULL,NULL);
esp_event_handler_instance_register(IP_EVENT,IP_EVENT_STA_GOT_IP,wifi_callback,NULL,NULL);
//初始化以下网络接口
esp_netif_init();
//创建一个STA类型的网卡
esp_netif_create_default_wifi_sta();
//初始化WIFI的底层配置
wifi_init_config_t wifi_cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&wifi_cfg);
//设置WIFI的模式
esp_wifi_set_mode(WIFI_MODE_STA);
//配置STA的相关参数
wifi_config_t sta_cfg =
{
.sta =
{
.ssid = "LAPTOP-MGHUVD8R",
.password = "123456789"
}
};
esp_wifi_set_config(ESP_IF_WIFI_STA,&sta_cfg);
esp_wifi_start();
//esp_wifi_connect();
esp_wifi_set_ps(WIFI_PS_NONE);//不需要省电!
}