ESP32 IDF环境 连接WIFI

文章介绍了如何在ESP32开发中使用FreeRTOS进行WiFi初始化,包括设置STA模式,配置SSID和密码,以及处理连接事件,如连接成功、连接失败和获取IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建wifi.h

#ifndef __WIFI_H_
#define __WIFI_H_

#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"

#include "lwip/err.h"
#include "lwip/sys.h"


#define EXAMPLE_ESP_WIFI_SSID      "MCSCV"
#define EXAMPLE_ESP_WIFI_PASS      "jnszstmOBB"
#define EXAMPLE_ESP_MAXIMUM_RETRY  10


#define CONFIG_ESP_WIFI_AUTH_WPA2_PSK 1
#define CONFIG_ESP_WPA3_SAE_PWE_HUNT_AND_PECK 1

#if CONFIG_ESP_WPA3_SAE_PWE_HUNT_AND_PECK
#define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_HUNT_AND_PECK
#define EXAMPLE_H2E_IDENTIFIER ""
#elif CONFIG_ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT
#define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_HASH_TO_ELEMENT
#define EXAMPLE_H2E_IDENTIFIER CONFIG_ESP_WIFI_PW_ID
#elif CONFIG_ESP_WPA3_SAE_PWE_BOTH
#define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_BOTH
#define EXAMPLE_H2E_IDENTIFIER CONFIG_ESP_WIFI_PW_ID
### ESP32 使用 IDF 连接 Wi-Fi 的方法 #### 配置环境与项目初始化 为了使 ESP32 能够通过 IDF 框架连接至 Wi-Fi,需先完成开发环境搭建以及项目的创建。这通常涉及安装 ESP-IDF 工具链,并利用 `idf.py` 命令来管理构建过程。 #### 修改配置文件 sdkconfig.h 或者 menuconfig 设置 Wi-Fi 功能依赖于特定的 SDK 配置选项,在编译前应当调整这些参数以适应实际需求。可以通过命令行工具 `menuconfig` 来访问图形化界面进行设置,确保启用了必要的功能模块[^1]。 #### 编写主程序 main.c 实现 Wi-Fi 连接逻辑 下面是一个简单的 C 语言源码片段展示了如何让 ESP32 设备作为客户端 (Station Mode) 自动尝试接入指定 SSID 和密码组合下的无线网络: ```c #include "esp_wifi.h" #include "nvs_flash.h" static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data){ if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START){ esp_wifi_connect(); }else if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP){ ip_event_got_ip_t *event = (ip_event_got_ip_t *) event_data; printf("Got IP: %s\n", inet_ntoa(event->ip_info.ip)); } } void wifi_init_sta(){ static bool initialized = false; if(initialized){ return ; } nvs_flash_init(); ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_create_default_wifi_sta(); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_start(); esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL); esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL); wifi_config_t sta_config = { .sta = { .ssid = CONFIG_ESP_WIFI_SSID, .password = CONFIG_ESP_WIFI_PASSWORD, }, }; ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &sta_config)); initialized = true; } ``` 上述代码实现了当设备启动完成后自动发起 Wi-Fi 连接请求的功能;一旦获得有效的 IP 地址,则会触发相应的回调函数输出提示信息[^3]。 #### 构建、烧录固件并运行测试 最后一步就是执行构建操作 (`idf.py build`) 将应用程序打包成二进制镜像文件,随后借助编程器将其下载到目标硬件上(`idf.py flash`) 。之后可以开启串口监视器观察日志输出验证是否能够正常上线[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值