卡住时
按现象对号入座。多数问题出在路径、接线与「改了没生成」。
编译失败
| 可能原因 | 怎么处理 |
|---|---|
找不到 arm-none-eabi-gcc | 检查 CubeCLT / 工具链是否在 PATH,VS Code cmake.environment 是否包含 bin |
| 找不到 cmake / ninja | 同上,确认 cmake.cmakePath 与 generator |
| 满屏宏/类型错误 | c_cpp_properties.json 的 defines、include 是否与芯片一致 |
| 生成器缓存脏 | 删掉 build/ 后重新 Configure |
下载器连不上
| 可能原因 | 怎么处理 |
|---|---|
| 未开 SWD | CubeMX → SYS → Debug = Serial Wire,重新生成并先下一版能跑的固件 |
| 接线错误/虚焊 | 重接 CLK/DIO/GND/3V3,共地必接 |
| 驱动 | 重装 ST-Link 驱动;换线/换口 |
| 芯片被读保护或异常 | 用 CubeProgrammer 看是否识别、是否需解除保护(谨慎) |
下 载成功但不闪 / 常亮
| 可能原因 | 怎么处理 |
|---|---|
| 引脚不是 PC13 | 以原理图为准,在 CubeMX 改脚并重新生成 |
| 高低电平与硬件相反 | 交换 SET/RESET,或查低电平点亮 |
| 代码写在 USER CODE 外被覆盖 | 逻辑移回 BEGIN/END,重新生成检查是否还在 |
| 下错 hex | 核对脚本路径与文件修改时间 |
| Delay 太短看不清 | 临时改为 200~500ms 观察 |
一改 CubeMX 逻辑就丢了
这是提示,不是 coincidence:业务写在了保护区外。
只在 USER CODE BEGIN/END 内添加代码;必要的全局变量、常量也放进对应的 USER CODE BEGIN PV 等区域。
仍然不行
把下面信息收齐再查或提问,比只说「不行了」有效得多:
- 芯片完整型号、板子照片或原理图关键部分
- CubeMX 版本、工具链版本
- 完整编译错误日志
- Programmer 连接日志
main.c里闪灯相关片段(含 USER CODE 注释)
站内若走项目协作,也可用 如何提需求 的方式把现象与环境写清楚。