STM32 ROS UART 参数协议移植

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

用于移植、实现、审查、测试或排障 STM32 与 ROS/上位机之间的自定义二进制串口参数协议。只要任务涉及 USART DMA+IDLE、0xAA 固定长度数据帧、0xA5 变长命令与回执、CRC16-CCITT、参数读写/分片读取、X-macro 参数表、FreeRTOS 请求队列或协议跨 STM32 工程迁移,就应使用本技能。提供与业务无关的 C++11 协议核心、HAL+FreeRTOS 接入模板、无 ROS 依赖的 Python 主机编解码库、移植清单和离线自检;不包含具体设备字段、私有参数表或 ROS 节点设计。

一句话选型结论

按资料字段整理

STM32 ROS UART 参数协议移植是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_b4771e4d/stm32-ros-uart-param-protocol
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_b4771e4d仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791682163
正文体量6.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
STM32 ROS UART 参数协议移植当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

6.9 KB
模型实际读到的说明书原文,来自技能仓库

STM32 ↔ 上位机 UART 参数协议移植

目标

建立可验证、可维护、与具体设备业务解耦的通信模块:

应用状态与参数宿主
        ↓
参数注册表 + 命令执行器
        ↓
纯字节线协议(帧、CRC、流解析)
        ↓
UART/USB/TCP 等传输适配器

主机库只处理 bytes,不依赖 rospy、rclpy 或 pyserial,也不替用户决定 topic、service、parameter 名称。

适用协议轮廓

  • 0xAA:由接收方向配置长度的固定数据帧,可承载状态或高频控制数据。
  • 0xA5:[HEAD][CMD][LEN][DATA][CRC16_LE] 变长命令帧。
  • CMD.bit7=1:回执方向;回执逐字节回显原命令以匹配事务。
  • 参数值统一占 4 B,但按 U8/I8/U16/I32/F32 各自编码。
  • 参数表支持只读/读写、clamp/reject、宿主就绪和 must-idle 策略。

具体设备的状态字段、数据帧长度、参数 ID 与单位必须由目标工程自己定义。本技能不带任何产品参数清单。

开始前确认

  1. 读取目标 MCU、工具链、RTOS/裸机模式、UART、DMA、IRQ 优先级和代码生成边界。
  2. 决定是保持既有线上兼容,还是只复用框架。若改变固定帧长度、字段偏移、参数 ID、类型或 CRC,明确标记不兼容。
  3. 明确参数是否掉电保存;本模板默认只改 RAM,不自动加入 Flash/EEPROM。
  4. 不知道引脚、DMA request/stream 或 IRQ 数值时标记待确认,不从相似型号猜测。

详见 协议骨架、移植指南 和 并发安全。

工作流

1. 盘点现有协议

记录:

  • 物理接口、波特率、8N1/校验方式;
  • 每个方向 0xAA 的固定长度;
  • 0xA5 最大 payload;
  • CRC 参数和端序;
  • 参数数量、ID、wire type 和单一事实来源;
  • ISR、协议任务、应用任务、TX DMA 缓冲的所有权;
  • 是否存在 CAN/RS485 等慢速下游代理。

代码和静态断言优先于手写文档。参数总数和分片数必须动态计算,不在多处写死。

2. 复用纯协议核心

使用 assets/mcu/:

  • uart_param_protocol.*:CRC、LE 编解码、流解析、命令与回执组帧;
  • param_registry.*:类型安全参数值、范围策略和 callback+context 宿主注入;
  • command_executor.*:任务上下文的参数命令执行和应用命令转发。

纯协议层不得 include HAL、RTOS、业务类或全局 UART handle。

3. 接入平台

使用 assets/integration/ 作为接线参考:

  • RX DMA/IDLE ISR 只复制字节、入队、重挂接接收;
  • 持久流解析器保留跨回调残帧,支持噪声、拆包和粘包;
  • ISR 不执行 setter、慢速总线往返、日志或 TX DMA;
  • 一个任务/主循环点独占参数执行和协议 TX;
  • TX DMA 完成前发送缓冲不可修改;
  • 按数值核对 FromISR API 与 FreeRTOS IRQ 优先级边界。

裸机可把 FreeRTOS 队列替换为固定容量主循环队列,但保持相同所有权模型。

4. 定义目标设备契约

先写状态/控制字段表:偏移、类型、单位、来源、无效值和刷新周期,再实现固定数据帧。参数定义保持单一事实来源,至少包含 ID、机器名、wire type、权限、flags、范围、单位和 callback。

getter 返回真实当前值;写回执携带 setter 执行后重新读取的实际值。慢速下游单读可以实时,批量读应使用缓存或异步预取。

5. 接入主机

使用 assets/host/uart_param_protocol.py:

  • StreamParser 接收任意大小 chunk;
  • 参数 builders 负责读、写、读全部;
  • encode_value/decode_value 按每个参数自己的类型处理;
  • parse_reply 校验回显并返回状态和实际值;
  • 固定 0xAA 数据帧由应用按自己的字段契约解码。

主机应用负责串口 I/O、事务串行化、超时和重试。不要把所有 4 B 参数值都按 float32 解码。

6. 验证

先运行:

python scripts/validate_skill.py

移植后还要:

  1. 编译 MCU Debug/Release,检查告警、Flash/RAM 和任务栈;
  2. 测 CRC 标准向量、五种 wire type、短帧、坏 CRC、噪声、粘包、跨 chunk、队列满和 TX busy;
  3. 真实串口测试固定数据帧、单读、写入、分片读全部、超时和断线恢复;
  4. 涉及运动设备时固定执行机构、准备独立断电手段,从零目标和低限幅开始;
  5. 明确记录未完成的硬件验证。编译通过不等于 DMA 时序或控制安全通过。

脚手架

预览:

python scripts/scaffold_protocol.py --target <目标目录>

确认后写入:

python scripts/scaffold_protocol.py --target <目标目录> --write

默认拒绝覆盖;只有查看目标文件并明确需要替换时才使用 --force。脚手架不会猜 UART、DMA、IRQ、状态字段或参数宿主。

交付要求

说明:

  1. 兼容移植还是框架复用;
  2. 协议核心、平台适配、参数定义和主机文件的变化;
  3. 固定帧、命令或参数契约是否有破坏性变化;
  4. ISR/任务/DMA 缓冲所有权和超时策略;
  5. 已运行的离线测试、构建和板级验证;
  6. 尚未验证的串口时序、丢包恢复、设备安全或持久化行为。

资源

  • 协议骨架
  • 移植指南
  • 并发安全
  • assets/mcu/ — C++11 通用核心
  • assets/integration/ — HAL+FreeRTOS 与参数表接入模板
  • assets/host/uart_param_protocol.py — 无传输/ROS 依赖的主机编解码库
  • scripts/scaffold_protocol.py — 不覆盖式脚手架
  • scripts/validate_skill.py — 离线自检

常见问题

5 问
答案由本站依据条目字段整理
STM32 ROS UART 参数协议移植怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_b4771e4d/stm32-ros-uart-param-protocol。安装方式为未标注。装完刷新技能列表或重开客户端。

STM32 ROS UART 参数协议移植支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

STM32 ROS UART 参数协议移植权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

STM32 ROS UART 参数协议移植收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

STM32 ROS UART 参数协议移植用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。