跳至内容
本页目录

GPIO 引脚没反应——引脚身份、占用与驱动方式

本页回答的问题:“我把引脚置高 / 让 LED 闪烁,但什么都没发生——哪个假设错了?”

最容易出错的是三个假设:你驱动的是哪个编号、这根引脚在你的板上是否真的空闲、LED 是什么驱动方式。按这个顺序检查。

第 1 步——你实际驱动的是哪个编号?

物理针号、板卡丝印、芯片 GPIO 编号和 SDK 名称是四件不同的事——引脚编号指南把它们拆开。各板的典型陷阱:

  • Pico / Pico 2——代码用 GP 编号(物理第 4 针是 GP2);40 针排针有自己的物理编号,与 GP 编号不一致。
  • Espressif 板——代码用 GPIO 编号;板上排针的行/列号不是 GPIO 编号。

如果闪烁代码能编译运行,但翻转的是另一根引脚,这一步就已经找到 bug 了。

第 2 步——引脚在你的板(和模组)上空闲吗?

“是芯片 GPIO"不等于"板卡把它留给了你”:

板卡需要检查的引脚原因事实所在
ESP32-S3-DevKitC-1GPIO35 / 36 / 37WROOM-1/1U 的 Octal flash/PSRAM 变体与所有 WROOM-2 上被内部存储占用——是条件,不是一律禁止指南
装 WROVER 模组的 ESP32-DevKitCGPIO16 / 17WROVER-E / WROVER-IE 上被模组内部 PSRAM 使用;WROOM-32E / 32UE 上空闲模组页
Pico / Pico 2GP23 / 24 / 25 / 29板内功能;根本没有引出到 J1/J2 排针板卡页

如果你的引脚在表里,跟链接走——条件及其适用范围决定这根引脚对你是否可用。

第 3 步——它是 LED 吗?哪种 LED?

  • ESP32-S3-DevKitC-1——板载 RGB LED 是可寻址型(单线协议),在 GPIO48(v1.0)或 GPIO38(v1.1)上。digitalWrite 式代码永远不会点亮它;要用可寻址 LED 驱动。具体是哪个 GPIO 取决于修订:RGB 指南。
  • ESP32-DevKitC V4——这块板没有用户 LED;“点亮板载灯"没有目标。自己接一颗,另见 V4 首次烧录指南。
  • Pico / Pico 2——GP25 以普通 GPIO 方式驱动板载 LED(SDK 默认 LED 引脚);简单闪烁在这里就是正确模型。

第 4 步——冲突与方向

  • 引脚上的外设功能(UART/I2C/SPI)只在该引脚真正支持复用时合法——这些芯片的硬件 UART 并不是"几乎任意 GPIO 都行”。总线指南的接线前检查节演示如何核实一个映射而不是假设它。
  • 输出方向与电平:确认没有其他东西在驱动同一网络(外部上/下拉或其他设备),也没有把配置成输入的引脚当输出读。

第 5 步——影响启动的引脚

有些引脚在上电时有第二个角色。ESP32-DevKitC 的排针表把 GPIO0 标为 “Boot”——强制其电平的外接电路可能让板无法正常启动。如果只有接上你的接线后板才起不来,先怀疑启动角色引脚。固定版本的板级指南在相应章节列出这些角色;完整的芯片级 strapping 表不在本页复制(见下)。

本页不能告诉你的

  • 我们没有在这里的硬件上复现这些故障。 本页把已核实的板卡事实重组成诊断顺序;顺序是 MCUID 的编辑工作。
  • 完整的芯片 strapping 表。 那属于芯片数据手册;固定版本的板级指南没有逐一说明每个 strapping 引脚的内部上/下拉。我们不凭记忆重建——落在第 5 步的情形请查你芯片的 datasheet。
  • 你的模组变体,如果未知。 第 2 步的条件取决于你实物板上的模组;分不清时保持条件悬置,不要假设引脚空闲。

来源

  • ESP32-DevKitC V4 用户指南——排针表(GPIO0 标注 “Boot”)、模组选项(commit 5c06bf18)
  • ESP32-S3-DevKitC-1 v1.0 / v1.1 用户指南——GPIO35/36/37 存储条件、可寻址 RGB 在 GPIO48(v1.0)/ GPIO38(v1.1)(commit 5c06bf18)
  • Pico SDK 板级头文件——GP25 为默认 LED 引脚(commit 079c6f39)
  • MCUID 板卡数据——Pico 排针占用(GP23/24/25/29 未引出 J1/J2,按官方板级文档核对)、WROVER-E/IE 的 GPIO16/17 内部存储占用