用途
Pin Assignment 用于为 Arduino、ESP32、ESP32-S3、Pico 或 Pico W 生成板级感知的引脚计划,同时不破坏仓库既有的声明约定。其核心原则是:逻辑声明 ID 并不自动等于物理 GPIO 编号,必须将这两层保持区分。
主要能力
- 记录并处理开发板/版本、MCU/模块、框架/核心版本、工具链、信号名称、方向、电压、电流、上拉需求、总线归属,以及启动/调试/USB/射频约束。
- 判断用户需要的是声明、物理接线,还是两者都要。
- 将每个信号分类为输入、输出、模拟、PWM、总线、中断、启动、调试、USB、flash、PSRAM 或射频相关。
- 保留板级特定的 flash、PSRAM、USB、启动绑带、调试和默认总线引脚,除非确切板级文档批准复用。
- 拒绝方向、上拉能力、电压、电流、ADC、PWM 或协议行为与信号不匹配的候选引脚。
- 保持逻辑 ID 稳定,并按请求的固定顺序分配。
- 支持生成原始 C++ 声明,例如:
constexpr int btn_esc = 101;
constexpr int btn_enter = 102;
constexpr int led_status = 103;
每个请求的信号使用下一个连续的逻辑值。除非用户明确将其定义为物理 GPIO 编号,否则这些值是稳定的逻辑标识符。不得将该格式替换为 enum、宏、数组、命名空间、解释性包装或重新排序的声明列表。
使用方式
- 先通过
../board-support/SKILL.md解析目标板,其resolution_status必须为resolved,才能用于所请求的引脚建议目的。 - 在选择物理引脚前,加载
../../references/boards/下匹配的文件。 - 如果开发板属于有界系列但缺少身份字段,应停止并请求补充,而不是使用相似配置。
- 若用户只请求声明,则仅以纯文本输出声明,不添加代码围栏、标题、解释或尾随注释。
- 若请求物理映射,则单独提供,并标注假设与有来源支持的约束。
适用场景
- 为 Arduino、ESP32、ESP32-S3、Pico、Pico W 分配引脚。
- 创建 GPIO 映射。
- 分配按钮、LED、传感器、总线或执行器引脚。
- 迁移引脚映射。
- 生成 constexpr int 声明。
限制与注意事项
- 必须检查确切开发板与物理引脚约束,不能假设引脚空闲。
- 经典 ESP32 的 GPIO34-39 为仅输入引脚,不能用于输出;ESP32-S3 需区分并核对其模块表。
- GPIO0 等绑带引脚在分配前需检查其绑带角色与复位电平。
- 编译通过不代表接线与目标行为已验证。
- 构建证明、上传证明、硬件证明与系统证明应分别报告。
- 电压/电流与上拉需求必须有来源,或明确标注为未知。
- 共享输出契约要求说明假设、所需工具与版本、实现步骤、按证明阶段划分的测试/证据、已知限制,以及恢复/安全说明。