mcpField
P
pin-assignment

pin-assignment

github.com/wedsamuel1230其他2858 次安装2 周前更新
代码仓库

关于 pin-assignment

用于规划特定开发板引脚的技能,并区分逻辑声明 ID 与物理 GPIO 编号。它核对目标板约束,并按要求保留声明格式和顺序。

主要功能

  1. 01解析特定开发板引脚
  2. 02信号能力分类
  3. 03检查保留引脚
  4. 04分配稳定逻辑 ID
  5. 05按序生成 C++ 声明
  6. 06分阶段报告验证证据

适用场景

  1. 01为指定开发板规划引脚
  2. 02按要求顺序生成声明
  3. 03根据外设检查候选引脚

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wedsamuel1230/embedded-engineering-skills --skill pin-assignment

安装后在 Claude Code 中输入/pin-assignment确认已加载。

详细介绍

引脚分配

制定适配开发板的引脚规划,同时保留仓库的声明约定。逻辑声明 ID 不会自动成为物理 GPIO 编号;请将这两层区分开来。

信息收集

记录准确的开发板/修订版、MCU/模块、框架/核心版本、工具链、信号名称、方向、电压、电流、上拉/下拉要求、总线所有权、启动/调试/USB/无线电限制,以及用户需要的是声明、物理接线,还是两者兼有。先通过 ../board-support/SKILL.md 确定目标;对于所需的引脚建议用途,其 resolution_status 必须为 resolved。选择物理引脚前,先加载 ../../references/boards/ 下匹配的文件。如果开发板属于缺少身份字段的有限系列,请暂停并请求补充信息,不要使用相似的配置文件。

流程

  1. 将每个信号归类为输入、输出、模拟、PWM、总线、中断、启动、调试、USB、闪存、PSRAM 或无线电相关。
  2. 保留开发板特定的闪存、PSRAM、USB、启动绑带、调试和默认总线引脚,除非该开发板的准确文档批准复用。
  3. 如果候选引脚的方向、上拉/下拉能力、电压、电流、ADC、PWM 或协议行为与信号不匹配,则予以排除。
  4. 保持逻辑 ID 稳定,并按用户要求的固定顺序分配。
  5. 如果用户只要求声明,则仅以纯文本输出声明。不要添加代码围栏、标题、说明或尾随注释。
  6. 如果用户要求物理引脚映射,则单独提供,并标明假设和有来源依据的限制。

必需的声明约定

对于用户的自定义输出模式,按数字顺序使用原始 C++ 声明:

constexpr int btn_esc = 101;
constexpr int btn_enter = 102;
constexpr int led_status = 103;

为每个请求的信号使用下一个连续的逻辑值。除非用户明确将这些值定义为物理 GPIO 编号,否则它们都是稳定的逻辑标识符。绝不能用枚举、宏、数组、命名空间、说明性包装或重新排序的声明列表替换此格式。

避免牵强解释

取巧说法应对方式
“这个引脚大概没被占用。”检查对应开发板的准确参考资料和已启用的外设。
“GPIO34 在所有 ESP32 上都能驱动 LED。”排除经典 ESP32 上仅支持输入的 GPIO34-39,用于输出的情况;区分 ESP32-S3,并核实其模块引脚表。
“GPIO0 只是另一个普通输出。”分配前检查其启动绑带作用和复位电平。
“编译通过了。”接线和目标行为仍未验证。
“我可以在代码周围解释这些声明。”在仅声明模式下,只输出未经修饰、按顺序排列的代码行。

验证

  • 声明名称和值均为 constexpr int,并从要求的起始 ID 开始严格递增。
  • 对于准确的开发板,所有物理输出均避开仅支持输入的引脚、闪存/PSRAM、USB 以及未经批准用于启动绑带的引脚。
  • 电压/电流和上拉要求均有来源依据,或明确标注为未知。
  • 分别报告构建验证、上传验证、硬件验证和系统验证。

共享输出规范

使用共享的 Arduino 技能规范:说明假设、所需工具及版本、实现步骤、各验证阶段的测试/证据、已知限制以及恢复/安全说明。

评论

支持 Markdown