系列前置博客:
一、前置准备
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启动与工作空间选择界面】

步骤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+时钟+调试接口)


引脚视图找到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文件保存路径/文件名(可选,新手友好)

步骤3:编译验证Hex文件生成

四、ST-Link/J-Link调试器切换全流程(附避坑)
核心需求:同一工程兼容ST-Link和J-Link两种调试器,无需重新创建工程,只需切换调试配置:
前提:硬件连接规则
| 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调试配置界面】
- Debug probe选择 SEGGER J-Link;
- Interface仍选择SWD;
- Device name填写芯片型号(如STM32F103RC,必须精准,否则识别失败);

步骤3:调试器切换使用


五、LED闪烁点灯
完成工程、Hex、调试器配置后,编写优化版闪烁代码,解决基础版代码“难维护、改引脚要全改”的问题:
1. 闪烁核心原理
LED闪烁本质是**“电平翻转+延时”**:PA0引脚交替输出低电平(亮)、高电平(灭),中间加入固定时长延时,形成视觉上的闪烁效果。
- 优化版思路:用宏定义封装引脚和电平逻辑,代码可读性更高、更易维护。
2. 优化版闪烁代码编写(附截图)
【对应截图17:main.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 */
/* 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. 编译烧录验证
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. 固件包未完整安装 |
八、核心知识点总结
原创不易,如果本文对你有帮助,欢迎点赞👍、收藏⭐、关注➕,有任何问题都可以在评论区留言,我会一一回复! 本文所使用的工程文件已上传至配套资源中,如有需要可自行下载。也可关注博主后留言获取。
🎁欢迎关注,获取更多技术干货!
公众号: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相关学习资料包

