代码:
#include <stdio.h>
#include "nvs_flash.h"
#include "esp_event.h"
#include "esp_netif.h"
#include "esp_wifi.h"
#include <string.h>
#include "esp_mac.h"
void WIFI_CallBack(void* event_handler_arg,esp_event_base_t event_base,int32_t event_id,void* event_data)//回调函数
{
if(event_base == IP_EVENT && event_id == IP_EVENT_AP_STAIPASSIGNED)
{
ip_event_ap_staipassigned_t* info = (ip_event_ap_staipassigned_t*)event_data;
printf("\nSTA的IP:"IPSTR"\n",IP2STR(&info->ip));
printf("新接入的STA的MAC的地址是:"MACSTR"\n",MAC2STR(info->mac));
}
if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STADISCONNECTED)
{
wifi_event_ap_stadisconnected_t* info = (wifi_event_ap_stadisconnected_t*)event_data;
printf("断开的STA的MAC地址是:"MACSTR"\n",MAC2STR(info->mac));
}
}
void app_main(void)
{
nvs_flash_init();//esp32 flash-nvs键值对
esp_event_loop_create_default();//创建默认事件循环
esp_event_handler_instance_register(IP_EVENT,IP_EVENT_AP_STAIPASSIGNED,WIFI_CallBack,NULL,NULL);
esp_event_handler_instance_register(WIFI_EVENT,WIFI_EVENT_AP_STADISCONNECTED,WIFI_CallBack,NULL,NULL);
//esp_event_handler_t
//AP
esp_netif_init();
//AP网卡初始化 以默认方式创建一个AP类型的网卡
esp_netif_create_default_wifi_ap();
//初始化WiFi底层配置
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
//设置WiFi的模式
esp_wifi_set_mode(WIFI_MODE_AP);
//配置AP的参数
wifi_config_t cfg2 = {
.ap = {
.ssid ="ESP32",
.ssid_len = strlen("ESP32"),
.channel = 1,
.password = "123456789",
.max_connection = 4,
.authmode = WIFI_AUTH_WPA_WPA2_PSK
}
};
esp_wifi_set_config(ESP_IF_WIFI_AP,&cfg2);
//启动wifi
esp_wifi_start();
}