You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ESP32-NODEMCU V1.1在Arduino IDE编译时出现ADC相关语法错误的解决方法咨询

解决ESP32 NodeMCU V1.1编译时__attribute__相关错误的方法

你遇到的是ESP32 Arduino核心与旧版IDE/编译器的兼容性问题,结合报错信息里枚举定义的__attribute__((deprecated))语法不被识别的情况,下面是几个靠谱的解决步骤:

1. 更新ESP32 Arduino核心到稳定版

这是最直接的解决方法,旧版本的ESP32核心里的ADC类型定义存在编译器兼容问题:

  • 打开Arduino IDE,进入文件 > 首选项,确认“附加开发板管理器网址”中包含https://dl.espressif.com/dl/package_esp32_index.json(如果没有就添加进去)
  • 打开工具 > 开发板 > 开发板管理器,搜索“ESP32”,找到esp32 by Espressif Systems,点击更新到最新的稳定版本(建议至少v2.0.0以上)
  • 更新完成后,重新选择NodeMCU-32S开发板(保持你原来的配置:40MHz、921600波特率、None),再尝试编译代码

2. 升级Arduino IDE版本(推荐)

你当前使用的Arduino IDE 1.8.15发布于2021年,自带的GCC编译器版本较老,对ESP32新语法的支持不足:

  • 下载最新的1.8.x稳定版或2.x版本(2.x版本是全新UI,对ESP32的支持更完善)
  • 安装完成后,重新按照步骤1安装/更新ESP32开发板核心,再进行编译

3. 临时修改头文件(应急方案,不推荐)

如果暂时无法更新环境,可以临时修改报错的头文件绕过问题,但这只是权宜之计:

  • 找到报错文件的路径:C:\Program Files (x86)\Arduino\hardware\expressif\esp32/tools/sdk/esp32/include/hal/include/hal/adc_types.h
  • 用文本编辑器打开该文件,找到第90行,将:
    ADC_DIGI_FORMAT_12BIT __attribute__((deprecated)),
    
    修改为:
    ADC_DIGI_FORMAT_12BIT,
    
  • 保存文件后重新编译,但后续更新ESP32核心时这个修改会被覆盖,且可能引发其他未知问题,优先选择前两种方法

报错原因说明

这个错误的本质是旧版本的GCC编译器不支持在枚举成员中直接使用__attribute__((deprecated))语法,而新版ESP32核心引入了这个语法标记废弃枚举值,导致旧编译器无法识别。更新核心或IDE后,编译器版本会同步升级,就能兼容这个语法了。

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

火山引擎 最新活动