You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32-CAM烧录报错:SYSTEM_EVENT_AP_STACONNECTED未声明的解决求助

解决ESP32-CAM中SYSTEM_EVENT_AP_STACONNECTED未定义的编译错误

问题原因

ESP32的Arduino核心库在版本迭代后,WiFi事件的常量命名规则发生了变更:旧版本使用SYSTEM_EVENT_*前缀,新版本统一改为WIFI_EVENT_*前缀。你代码里的旧版常量名在当前环境中已被移除,因此触发编译错误。这不是缺少文件的问题,属于库版本更新带来的命名规范调整。

解决方案

直接将代码中的SYSTEM_EVENT_AP_STACONNECTED替换为WIFI_EVENT_AP_STACONNECTED即可。同时修正WiFi.localIP()与字符串拼接的潜在类型问题,修改后的完整代码如下:

#include <WiFi.h> 
const char* ssid = "CarDrone";
const char* password = "08060905";
String network_ssid = "---";
String network_password = "----";
WebServer server(80);

void WiFiPointConnected(WiFiEvent_t event, WiFiEventInfo_t info) {
  Serial.println("Connected!");
}
void setup() {
  Serial.begin(115200);
  WiFi.softAP(ssid, password);
  // 替换为新版本的事件常量名
  WiFi.onEvent(WiFiPointConnected, WIFI_EVENT_AP_STACONNECTED);
  Serial.println();
  // 转换IP地址为字符串后再拼接
  Serial.println("ESP32-CAM IP Address: " + WiFi.localIP().toString());
}
void loop() {}

兼容新旧版本的可选方案

如果需要代码同时兼容旧版和新版ESP32核心库,可以添加条件编译:

#if defined(ARDUINO_ESP32_VERSION_MAJOR) && ARDUINO_ESP32_VERSION_MAJOR >= 2
#define AP_CONNECTED_EVENT WIFI_EVENT_AP_STACONNECTED
#else
#define AP_CONNECTED_EVENT SYSTEM_EVENT_AP_STACONNECTED
#endif

之后代码中直接使用AP_CONNECTED_EVENT代替具体的常量名即可。

内容的提问来源于stack exchange,提问作者Idea Softworks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:32:07