系列前置博客:
- STM32保姆级入门教程|第1章:零基础必看,从认知到实战全解析
- STM32CubeIDE配置STM32F103RCT6点亮PA0 LED+J-Link下载教程
本文核心:解决新手"Hex文件找不到、调试器切换报错、点灯代码难维护"三大痛点,掌握Hex文件自定义生成、ST-Link/J-Link无缝切换,最终实现LED闪烁点灯
一、前置准备
1. 软件准备
- 已安装STM32CubeIDE(2024/2025版),并完成基础环境配置;
- 已安装ST-Link、J-Link官方驱动(确保电脑能识别调试器);
- 前置工程:已完成STM32F103RCT6 PA0引脚GPIO输出模式基础配置(无基础工程可参考系列第二篇)。
2. 硬件准备
| 硬件器材 | 规格与说明 |
|---|---|
| STM32开发板 | STM32F103RCT6核心板(PA0引脚接LED,低电平点亮) |
| 调试器 | ST-Link、J-Link |
| 辅助工具 | USB数据线、SWD杜邦线(看是否需要外置LED)、万用表(可选,验证电平) |
二、新建STM32CubeIDE工程(零基础也能会)
步骤1:启动软件并选择工作空间
【对应截图1:STM32CubeIDE启动与工作空间选择界面】
- 双击打开STM32CubeIDE,首次启动弹出工作空间选择窗口,选择全英文、无空格、无特殊符号 的文件夹(如
F:\Stm32Studio); - 勾选
Use this as the default and do not ask again,点击Launch启动软件。

步骤2:新建STM32工程
-
点击顶部菜单栏
File→New→STM32 Project,弹出芯片选择窗口。

-
在
Commercial Part Number搜索框输入STM32F103RCT6,选中对应芯片后点击Next。

💡划重点 记得把第二个红框里面的星星点亮收藏起来,下次就可以直接选择不用搜索
-
工程配置页面按以下要求填写:
Project Name:填写STM32F103RCT6_LED_Blink(禁止中文/空格/特殊符号);Project Location:默认继承工作空间路径,无需修改;- 其余选项保持默认,点击
Finish。 
-
弹出切换透视图提示,勾选
Remember my decision,点击Yes,进入CubeMX配置界面。
步骤3:基础配置(GPIO+时钟+调试接口)
- 左侧
System Core→SYS,Debug下拉选择Serial Wire(SWD模式,必配,否则芯片锁死)。

- 左侧System Core → RCC,HSE下拉选择Crystal/Ceramic Resonator(外部晶振),无外部晶振则选Internal RC Oscillator。

-
引脚视图找到
PA0,右键选择GPIO_Output;

-
左侧
System Core→GPIO,选中PA0,配置参数:GPIO output level:High(初始熄灭);GPIO mode:Output Push Pull(推挽输出);Pull-up/Pull-down:No pull-up and no pull-down;User Label:LED1(别名,方便代码调用)。

-
顶部
Clock Configuration,HCLK输入72,回车自动配置时钟树,无红色报错即成功。

-
点击右上角
保存图标(💾),弹出提示点击Yes,等待代码生成完成后进入代码编辑界面。


三、Hex文件自定义生成配置(精准找到烧录文件)
新手常见痛点:编译后找不到Hex文件、默认路径太深、想自定义文件名/保存位置,以下是全流程配置:
步骤1:开启Hex文件生成(默认关闭,必配)
-
右键点击工程名(
STM32F103RCT6_LED_Blink)→ 选择Properties,打开工程属性窗口。

-
在左侧列表中找到
C/C++ Build→Settings→ 右侧选择Tool Settings→MCU Post build outputs; -

-
勾选以下选项(核心):
Convert to Intel Hex file (-Oihex):生成Intel格式Hex文件(通用烧录格式);Convert to binary file (-Obinary)(可选):生成bin文件,兼容更多烧录工具;
-
点击
Apply and Close保存配置。
步骤2:自定义Hex文件保存路径/文件名(可选,新手友好)
- 仍在
C/C++ Build→Settings→MCU Post build outputs界面; - 在
Artifact name(有的版本叫 Output file name)输入框中自定义文件名(如STM32F103RCT6_LED_Blink); - 若想修改保存路径,可在
Build Artifact中调整Output directory(建议新手先使用默认路径,避免配置错误)。

步骤3:编译验证Hex文件生成
- 点击顶部工具栏锤子图标 (Build)编译工程,控制台显示
Build Finished. 0 errors, 0 warnings.即为成功; - 打开工程目录 →
Debug文件夹,可看到生成的xxx.hex文件(与自定义文件名一致)。

四、ST-Link/J-Link调试器切换全流程(附避坑)
核心需求:同一工程兼容ST-Link和J-Link两种调试器,无需重新创建工程,只需切换调试配置:
前提:硬件连接规则
| 调试器引脚 | STM32核心板SWD引脚 | 备注 |
|---|---|---|
| 3.3V | 3.3V/VCC | 禁止接5V,否则烧坏芯片/调试器 |
| SWDIO | SWDIO/DIO | 数据引脚,接反无法通信 |
| SWCLK | SWCLK/CLK | 时钟引脚,接反无法通信 |
| GND | GND | 共地,必须接 |
步骤1:配置ST-Link调试器(默认配置)
-
点击顶部菜单栏
Run→Run Configurations...,打开运行配置窗口;

-
左侧选择
STM32 Cortex C/C++ Application→ 右键工程名 →New Configuration,新建配置;

-
右侧切换到
Debugger选项卡:Debug probe选择ST-Link (ST-LINK GDB server);Interface选择SWD(必选,JTAG模式占用引脚多,新手不用);Reset mode选择Software system reset(烧录后自动复位运行);

-
点击
Apply保存,命名为ST-Link_Config(方便区分)。

步骤2:切换为J-Link调试器
【对应截图15:J-Link调试配置界面】
- 仍在
Run Configurations窗口,复制上述ST-Link配置(右键ST-Link_Config→Duplicate),命名为J-Link_Config; - 切换到
Debugger选项卡:Debug probe选择SEGGER J-Link;Interface仍选择SWD;Device name填写芯片型号(如STM32F103RC,必须精准,否则识别失败);
- 点击
Apply保存配置。

步骤3:调试器切换使用
- 烧录时,点击顶部工具栏绿色播放图标旁的下拉箭头 ,选择对应的配置(
ST-Link_Config/J-Link_Config); - 点击播放图标,软件自动识别对应调试器并烧录程序,无需重复接线(只需替换调试器硬件)。


五、LED闪烁点灯
完成工程、Hex、调试器配置后,编写优化版闪烁代码,解决基础版代码"难维护、改引脚要全改"的问题:
1. 闪烁核心原理
LED闪烁本质是**"电平翻转+延时"**:PA0引脚交替输出低电平(亮)、高电平(灭),中间加入固定时长延时,形成视觉上的闪烁效果。
- 优化版思路:用宏定义封装引脚和电平逻辑,代码可读性更高、更易维护。
2. 优化版闪烁代码编写(附截图)
【对应截图17:main.c文件代码编辑界面】
- 打开工程
Core→Src→main.c文件,在/* USER CODE BEGIN Includes */下方添加宏定义(封装引脚和电平):
c
/* USER CODE BEGIN Includes */
// 封装LED引脚和电平逻辑,后期修改仅需改此处
#define LED1_PORT GPIOA
#define LED1_PIN GPIO_PIN_0
#define LED1_ON GPIO_PIN_RESET // 低电平点亮
#define LED1_OFF GPIO_PIN_SET // 高电平熄灭
/* USER CODE END Includes */
- 在
while(1)主循环中写入优化版闪烁代码:
c
/* USER CODE BEGIN WHILE */
while (1)
{
// 点亮LED
HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, LED1_ON);
HAL_Delay(500); // 延时500ms
// 熄灭LED
HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, LED1_OFF);
HAL_Delay(500); // 延时500ms
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
⚠️ 关键说明:
- 宏定义
LED1_ON/LED1_OFF对应硬件电路的点亮逻辑,若你的LED是高电平点亮,只需修改这两个宏定义; HAL_Delay()是毫秒级延时函数,参数越大,闪烁越慢,例如改为1000则1秒亮、1秒灭。
六、实战验证(多调试器烧录+闪烁效果测试)
1. 编译烧录验证
- 点击顶部工具栏锤子图标(Build)重新编译工程,确保无报错;
- 选择任意调试器配置(ST-Link/J-Link),点击播放图标烧录程序;
- 烧录完成后,开发板PA0引脚的LED会以1秒为周期循环闪烁,验证成功。
STM32保姆级入门教程|第3章:从新建工程到LED闪烁点灯
2. 手动烧录Hex文件(备用方案)
若调试器直接烧录失败,可手动烧录Hex文件:
- ST-Link:使用
ST-Link Utility软件,选择File→Open File导入Hex文件 →Program & Verify烧录; - J-Link:使用
J-Flash软件,选择芯片型号 → 导入Hex文件 →Auto programming烧录。
七、常见问题排查(90%新手必踩的坑)
| 故障现象 | 排查优先级 | 解决方法 |
|---|---|---|
| 生成Hex文件后提示"文件为空" | 1 | 1. 未勾选Convert to Intel Hex file;2. 工程编译有报错,需先解决编译错误;3. 自定义路径无写入权限(换默认路径) |
| 切换J-Link后提示"Device not found" | 1 | 1. 检查J-Link驱动是否安装成功;2. Device name填写错误(如STM32F103RC而非STM32F103RCT6);3. SWD接线是否接反 |
| 切换调试器后烧录成功但LED不闪 | 2 | 1. 延时函数参数过小(如10ms,肉眼无法识别);2. 宏定义电平逻辑与硬件不符;3. 芯片复位模式配置错误(改为Software system reset) |
| 新建工程编译报错 | 2 | 1. 工程名/路径含中文/空格;2. 时钟树配置错误(HCLK超过芯片最大主频);3. 固件包未完整安装 |
八、核心知识点总结
- 新建工程关键:必须配置SWD调试接口和时钟树,PA0引脚设为推挽输出模式,避免芯片锁死或功能异常;
- Hex文件生成 :STM32CubeIDE默认不生成Hex文件,需手动勾选
Convert to Intel Hex file,自定义文件名/路径更便于管理; - 调试器切换 :同一工程可创建多个调试配置,ST-Link/J-Link核心区别是
Debug probe选择和J-Link需填写精准的Device name; - LED闪烁优化:用宏定义封装引脚和电平逻辑,后期修改无需改动核心代码,提升可维护性。
原创不易,如果本文对你有帮助,欢迎点赞👍、收藏⭐、关注➕,有任何问题都可以在评论区留言,我会一一回复!
本文所使用的工程文件已上传至配套资源中,如有需要可自行下载。也可关注博主后留言获取。
🎁欢迎关注,获取更多技术干货!
公众号:BackCatK Chen,文章末尾可以扫码关注
🎁资料包亮点
这份资料包涵盖了从硬件电路设计 到STM32单片机开发 ,再到Linux系统学习的全链路内容,适合不同阶段的学习者:
- 硬件基础:包含硬件电路合集、硬件设计开发工具包,帮你打牢底层基础。
- STM32专项:从环境搭建、开发工具、传感器模块到项目实战,还有书籍和芯片手册,一站式搞定STM32学习。
- C语言进阶:C语言学习资料包,助你掌握嵌入式开发的核心语言。
- 面试求职:嵌入式面试题合集,提前备战技术面试。
- Linux拓展:Linux相关学习资料包,拓宽技术视野。
📂资料包目录
- 00-STM32单片机环境搭建
- 01-硬件电路合集
- 02-硬件设计开发工具包
- 03-C语言学习资料包
- 04-STM32单片机开发工具包
- 05-STM32传感器模块合集
- 06-STM32项目合集
- 07-STM32单片机书籍&芯片手册
- 08-Linux相关学习资料包
