系列博客第1篇:STM32保姆级入门教程|第1章:零基础必看,从认知到实战全解析 本文配套硬件:STM32F103RCT6最小系统板、J-Link调试器(ST-Link也可)、3.3V绿色LED+3.3K限流电阻 本文目标:零基础新手跟着操作,100%实现PA0引脚控制LED点亮、周期性闪烁,吃透STM32 GPIO输出配置全流程
一、前置准备
1. 软件准备
已完成STM32CubeIDE的安装与环境配置(未完成的同学先看STM32CubeIDE 保姆级安装教程),软件版本无强制要求,2024-2025最新版均可,全程使用ST官方HAL库开发。
2. 硬件准备
| STM32核心板 | 本文以新手最常用的STM32F103RCT6为例,其他STM32型号操作逻辑完全通用 |
| 调试器 | 推荐J-Link或ST-Link(SWD模式烧录,稳定不踩坑) |
| LED与外围电路 | 建议入手开发版 |
| Windows电脑 | 无配置要求,能正常运行STM32CubeIDE即可 |
二、核心电路原理与点亮逻辑
本文配套的硬件电路如下,所有操作均基于此电路设计,新手务必先看懂再动手:

电路结构与导通逻辑
- 点亮:PA0引脚输出低电平(0V),LED阳极3.3V、阴极0V,形成3.3V压差,满足导通条件,LED点亮;
- 熄灭:PA0引脚输出高电平(3.3V),LED两端压差为0,无电流流过,LED熄灭。
⚠️ 新手避坑提示:此电路为低电平点亮、高电平熄灭,如果你的电路是LED阴极接GND、阳极接PA0,逻辑完全相反,请勿直接照搬代码!
三、全流程操作步骤(每步配截图标注)
步骤1:启动STM32CubeIDE,新建工程
双击打开STM32CubeIDE,首次启动会弹出工作空间选择窗口,选择一个全英文、无空格、无特殊符号的文件夹作为工作空间(例如F:\\Stm32Studio),勾选Use this as the default and do not ask again,点击Launch启动软件。
进入软件主界面后,点击顶部菜单栏 File → New → STM32 Project,新建一个STM32工程。

弹出MCU/MPU Selector芯片选择窗口,在顶部Commercial Part Number搜索框中输入你的核心板芯片型号(本文以STM32F103RCT6为例),在下方列表中选中对应芯片,点击右下角Next。

进入工程配置页面,按以下要求填写,其余选项保持默认:
- Project Name:工程名,填写LED_PRO(禁止中文、空格、特殊符号,否则会编译报错)
- Project Location:工程保存路径,同样要求全英文无空格
- 点击右下角Finish完成工程创建

弹出是否切换透视图的提示框,勾选Remember my decision,点击Yes,自动进入STM32CubeMX图形化配置界面。 
步骤2:调试接口与系统时钟配置(必做!跳过必锁芯片)

步骤3:PA0引脚GPIO功能配置(核心步骤)


| GPIO output level | High | 初始上电输出高电平,LED默认熄灭,避免上电瞬间亮灯 |
| GPIO mode | Output Push Pull | 推挽输出模式,可直接输出高低电平,驱动能力强,适合点灯 |
| GPIO Pull-up/Pull-down | No pull-up and no pull-down | 无上下拉,硬件电路已有上拉电阻,无需单片机内部上下拉 |
| Maximum output speed | Low | 低速输出,点灯无需高速,降低功耗与干扰 |
| User Label | LED1 | 用户标签,给PA0起别名,后续代码可直接用LED1指代,不易写错引脚 |
步骤4:工程参数配置与初始化代码生成
顶部切换到Project Manager工程管理界面,左侧选择保存,按以下要求配置:
-
勾选Generate Under Root,代码生成在工程根目录,方便查找
-
其余选项保持默认即可 –

步骤5:编写用户代码(点亮LED+闪烁功能)

⚠️ 新手避坑提示:所有用户编写的代码,必须放在/ USER CODE BEGIN X /和/ USER CODE END X /之间,否则重新生成配置代码时,你写的代码会被直接覆盖!
功能1:实现LED上电常亮
在main.c中找到while(1)主循环,在对应的用户代码区写入以下代码:
/* USER CODE BEGIN WHILE */
while (1)
{
// PA0输出低电平,点亮LED
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
-
函数说明:HAL_GPIO_WritePin是HAL库的GPIO引脚电平写函数,三个参数分别为:GPIO端口、引脚号、输出电平
-
GPIO_PIN_RESET:输出低电平(点亮LED);GPIO_PIN_SET:输出高电平(熄灭LED)
-
因为我们给PA0设置了用户标签LED1,所以软件自动生成了LED1_GPIO_Port(对应GPIOA)、LED1_Pin(对应GPIO_PIN_0),无需手动写端口引脚,避免写错。
步骤6:工程编译与hex文件生成
【对应截图14:编译按钮与编译结果界面】
代码编写完成后,点击软件顶部工具栏的锤子图标(Build按钮),开始编译工程。 
等待编译完成,查看下方Console控制台输出:
-
若显示Build Finished. 0 errors, 0 warnings.,即为编译成功,无任何报错;
-
若出现红色报错,优先检查:工程路径是否有中文、代码是否写在用户代码区外、引脚配置是否正确。

编译成功后,软件会自动生成可烧录的hex文件,保存在工程目录的Debug文件夹中。
步骤7:配置J-Link调试器与下载程序

| 3.3V | 3.3V/VCC |
| SWDIO | SWDIO/DIO |
| SWCLK | SWCLK/CLK |
| GND | GND |


回到STM32CubeIDE,点击顶部菜单栏Run → Run Configurations…,打开运行配置窗口。 
在左侧列表中找到STM32 Cortex C/C++ Application,右键点击选择New Configuration,新建一个运行配置。 
在右侧配置界面中:
-
Main选项卡:确认工程名称与可执行文件路径正确;
-
Debugger选项卡:
-
Debug probe选择J-Link (Probe);
-
Interface选择SWD;
-
其余选项保持默认即可。

-
点击Apply保存配置,然后点击Run,软件会自动识别J-Link调试器,将程序烧录到STM32芯片中。

烧录完成后,芯片会自动复位运行程序,此时可以看到:
-
PA0连接的LED常灭;

-
常亮代码:PA0连接的LED常亮;

恭喜你!成功完成了STM32的第一个入门项目,并掌握了J-Link调试器的使用!
四、核心知识点总结(新手必记)
GPIO输出模式:推挽输出模式可直接输出强高低电平,适合直接驱动LED等小功率器件;
HAL库核心函数:
- 引脚电平设置:HAL_GPIO_WritePin(端口, 引脚, 电平)
用户代码区规则:所有手写代码必须放在USER CODE BEGIN/END之间,避免被自动生成的代码覆盖;
调试接口配置:必须开启SWD调试模式,否则会导致芯片锁死,无法再次烧录;
J-Link调试器:支持SWD模式,可实现程序下载、在线调试、断点设置等功能,是嵌入式开发的重要工具。
五、99%新手点灯失败的故障排查指南
| 编译报错,无法生成hex文件 | 1 | 1. 检查工程路径、工作空间是否有中文/空格/特殊符号;2. 检查代码是否写在用户代码区外;3. 检查芯片固件包是否完整安装 |
| 烧录失败,提示无法连接芯片 | 1 | 1. 检查J-Link接线是否正确、有无虚焊;2. 检查SYS配置中是否开启了Serial Wire调试模式;3. 检查核心板是否正常供电;4. 重新安装J-Link驱动 |
| 烧录成功,LED完全不亮 | 1 | 1. 检查LED正负极是否接反(长脚阳极、短脚阴极);2. 检查电平逻辑是否搞反,确认电路是高电平还是低电平点亮;3. 检查PA0引脚是否配置为GPIO_Output模式;4. 用万用表测量PA0引脚电平,确认是否和代码输出一致 |
| LED微亮,亮度极低 | 2 | 1. 检查GPIO模式是否配置为开漏输出,需改为推挽输出;2. 检查限流电阻阻值是否过大,3.3V电路推荐1K-3.3K;3. 检查PA0引脚是否虚焊 |
| 第一次烧录成功,后续再也无法连接 | 2 | 未开启SWD调试模式,芯片被锁死,需通过串口ISP模式解锁芯片,重新烧录带SWD配置的程序 |
原创不易,如果本文对你有帮助,欢迎点赞👍、收藏⭐、关注➕,有任何问题都可以在评论区留言,我会一一回复! 本文所使用的工程文件已上传至配套资源中,如有需要可自行下载。也可关注博主后留言获取。
🎁欢迎关注,获取更多技术干货!
公众号: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相关学习资料包





