kukucaicndy/embedded_ai_skills/stm32-debug
Claude Code and agent skill by kukucaicndy/embedded_ai_skills
Trust tier 2
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
STM32 debugging via serial log and ST-Link. Invoke when user encounters bugs, crashes, or unexpected behavior on STM32 and needs root cause analysis.
Install
npx vskill@latest install kukucaicndy/embedded_ai_skills/stm32-debugSKILL.md
STM32 调试技能(串口日志 + ST-Link)
跨平台支持:Windows / macOS / Linux。调试手段:串口日志(首选) + ST-Link 寄存器/堆栈(备选/联用)。
一、执行流程总览
二、第一步:环境准备
2.1 安装 stm32-dev Skill
AI 首次执行本 Skill 时,必须先检查 stm32-dev-setup skill 是否已存在。
stm32-dev-setup skill 提供完整的工具链安装、工程编译、烧录流程。本 Skill 的编译/烧录步骤均复用 stm32-dev 的能力。
2.2 检查 ST-Link 连接
| 结果 | 动作 | |
|---|---|---|
Found 1 stlink programmers + 芯片信息 | ✅ 继续 | |
Couldn't find any ST-Link | ❌ 告知用户检查连接 |
验证 ST-Link 可读写芯片:
如能正常输出r0~r15、pc、msp、psp、xPSR等寄存器,说明 ST-Link 调试通道正常。
2.3 安装串口调试工具(EmberInterDebugTool)
本工具为安装包形式,需安装后才能使用。 工具配套 GUI 和 CLI 两种模式,使用前需先启动 GUI。
下载地址: https://github.com/kukucaiCndy/EmberinterTool/releases
| 步骤 | 操作 | |
|---|---|---|
| 1. 下载安装包 | 从 Releases 页面下载最新安装包(.exe / .dmg / .deb) | |
| 2. 运行安装程序 | 按安装向导完成安装,记下安装目录 | |
| 3. 启动 GUI | 安装完成后先启动 GUI,确认工具正常运行 | |
| 4. CLI 可用 | GUI 启动后,CLI 命令行接口才可用于脚本/自动化场景 |
2.4 加载工具 Skill 并学习 CLI 命令
AI 在使用串口工具前,必须先加载工具对应的 skill,掌握其命令行参数。
Skill 获取来源(按优先级):
AI 加载流程:
⚠️ 不要假设参数名。 必须通过 skill 中的说明确认后再使用。
三、第二步:问题理解
AI 必须先理解问题全貌,再动手。核心理念:先诊断,后开药。
四、第三步:代码研读
AI 先阅读所有相关代码,建立完整调用链理解,再决定如何插入日志。
研读范围
- 用户应用代码 —
code/src/main.c及主循环 - 中断服务例程 —
SysTick_Handler、各外设 ISR - HAL 回调 —
HAL_UART_MspInit、HAL_GPIO_EXTI_Callback等 - 初始化代码 —
SystemClock_Config、各MX_xxx_Init
分析要点
- 哪些变量的值变化可能导致问题?
- 哪些函数调用路径可能出问题?
- 调用时序是否正确(先初始化 A 再初始化 B)?
- 参数传递是否正确(指针、长度、缓冲区大小)?
- 中断优先级是否冲突?
五、第四步:调试方案选择
AI 向用户报告选择的方案及理由,获得确认后继续。
六、方案 A:串口日志调试
6.1 配置串口工具
使用前确保已按 2.3 节安装 EmberInterDebugTool 并启动 GUI。
启动监听:
AI 按照 2.4 节加载的 skill 中的说明,使用 CLI 启动串口监听并保存日志。
⚠️ 实际参数名以 skill 中的说明为准。 上述流程为示例,AI 需先执行 2.4 节的加载流程后再组装命令。
6.2 添加诊断日志
AI 根据代码研读结果,在关键位置添加日志。日志格式要求:
日志插入原则:
| 位置 | 日志内容 | |
|---|---|---|
| 函数入口 | 函数名 + 关键参数值 | |
| 函数出口 | 返回值 | |
| 状态变化 | 旧值 → 新值 | |
| 错误分支 | 错误码 + 上下文变量 | |
| ISR 入口 | ISR 名 + 关键外设状态寄存器 | |
| 关键循环 | 循环计数 + 关键变量 |
⚠️ 日志必须短小精悍。 在 ISR 中尤其不能打印过多字符,会影响时序。
6.3 编译 + 烧录 + 记录时间戳
6.4 分析日志
复位设备后,串口工具持续监听。AI 分析烧录时间戳之后的日志:
- 过滤出时间戳之后的日志行
- 根据日志中的标签和变量值,还原程序执行路径
- 对比预期行为与实际行为,定位偏差点
- 从偏差点向前追溯调用链,寻找根因
七、方案 B:ST-Link 调试
7.1 触发条件
7.2 读取 CPU 寄存器
7.3 解析调用栈
根据 `PC`、`LR`、`MSP` 重建调用链:
7.4 读取外设寄存器
外设寄存器基址参考芯片参考手册。常见 F103 寄存器:```RCC: 0x40021000GPIOA: 0x40010800 GPIOB: 0x40010C00 GPIOC: 0x40011000USART1:0x40013800NVIC: 0xE000E100SCB: 0xE000ED00```
7.5 结合源码分析
- 将
PC所在函数作为出发点 - 检查
LR确认调用来源 - 遍历栈内存寻找更多返回地址,重建完整调用链
- 结合源码检查:参数是否正确传递?初始化是否正确?中断是否冲突?
八、方案 C:串口 + ST-Link 联用
九、根因分析
AI 必须深入分析,不能停留在表象。
核心分析原则
分析检查清单
| 检查项 | 排查方法 | |
|---|---|---|
| 外设时钟是否使能 | 查 HAL_MspInit / MX_xxx_Init 中 __HAL_RCC_xxx_CLK_ENABLE() | |
| GPIO 引脚配置是否正确 | 查 Mode、Pull、Alternate 配置 | |
| hal_conf.h 模块是否启用 | 查对应 #define HAL_xxx_MODULE_ENABLED 是否去注释 | |
| CMakeLists 是否链接 HAL 模块 | 查 target_link_libraries 中 HAL::STM32::{F}::xxx | |
| ISR 是否存在 / 命名正确 | 查 ISR 函数名匹配启动文件中的向量表名 | |
| SysTick 是否正确配置 | SysTick_Handler 中调用 HAL_IncTick() | |
| 缓冲区大小是否足够 | snprintf / HAL_UART_Transmit 的 buffer 大小 | |
| 栈是否溢出 | 检查 MSP 是否接近 SRAM 底部 | |
| DMA 是否启用(UART/SPI 依赖) | hal_conf.h 启用 + CMakeLists 链接 | |
| 外设初始化在 SystemClock_Config 之后 | 确保 MX_xxx_Init 在 SystemClock_Config() 之后调用 |
十、报告输出
十一、等待用户决策
十二、调试命令速查
ST-Link 命令
串口监听工具
使用 EmberInterDebugTool(按 2.3/2.4 节安装并加载 skill),根据 skill 中的说明使用 CLI 启动监听。
反汇编/符号表
十六进制查看
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingstm32/stm32-debug/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kukucaicndy/embedded_ai_skills/stm32-debug)