💡 本篇为《零基础快速上手STM32开发》系列第三篇——实践开发篇,前两篇内容可点击回顾:
🧭 前言
很多朋友在入门 STM32 的过程中,都会遇到一个共同的问题:环境都配好了,但不知道下一步该干啥?
IDE界面打开就懵,工程结构复杂不明,连个LED都点不亮,就更别说做实际项目了。
今天这篇文章,就带你一步一步完成STM32的第一个实践项目:点亮一个LED灯。
这不仅仅是“Hello World”,更是你走进嵌入式世界的第一步!
🛠️ 项目目标
实现通过按键控制 LED 灯的开与关,主要包括:
使用 STM32CubeMX 配置工程
在 STM32CubeIDE 中编写控制逻辑
下载程序到开发板并验证效果
📌 适用开发板:STM32F103C8T6(俗称“蓝丁板”)
📌 软件环境:STM32CubeMX、Keil uVision5
🧑💻 实践步骤
1️⃣ 创建工程
打开 STM32CubeMX,创建新工程:
选择芯片型号:
STM32F103C8Tx
命名为
LED_Button_Project
配置系统时钟为默认值(或选择外部晶振 HSE)
2️⃣ 配置引脚
在 Pinout & Configuration 中:
设置
PA1
为 GPIO Output(连接 红色LED)设置
PA2
为 GPIO Output(连接 黄色LED)设置
PB1
为 GPIO Input(板载用户按键-1)设置
PC11
为 GPIO Input(板载用户按键-2)
🔧 GPIO 设定:
PA1
: Output push-pull, No pull, Low speedPA2
: Output push-pull, No pull, Low speedPB1
: Input, Pull-upPB2
: Input, Pull-up
3️⃣ 生成工程代码
点击 Project -> Generate Code
,选择打开 STM32CubeIDE
。
编译并打开 main.c
文件。
4️⃣ 编写控制代码
在 main.c
的 while(1)
循环中加入以下代码:
// 控制红灯
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // B1按下,红灯点亮
} else {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // 松开熄灭
}
// 控制黄灯
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_11) == GPIO_PIN_RESET) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET); // B11按下,黄灯点亮
} else {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); // 松开熄灭
}
📝 小贴士:
STM32板载按键是低电平触发,所以检测的是GPIO_PIN_RESET
。
5️⃣ 下载程序并验证
使用 ST-Link 连接开发板
点击工具栏上的🔄编译按钮
选择 Run -> Debug 下载程序
按下板载按键,观察 LED 灯是否点亮 💡
🧩 常见痛点 & 解决方案
🆘 提示:PC13 在某些开发板上连接的是高阻输入,响应慢,可更换为别的IO测试。
🏁 写在最后
从点亮一个小小的 LED 开始,STM32 的世界就这样慢慢向你展开了。
🌱 这只是第一步,后续你可以尝试:
多LED控制
PWM呼吸灯
串口打印调试信息
连接传感器进行数据读取…
如果你也曾为“点不亮一个灯”抓耳挠腮,不妨收藏这篇文章,让入门不再焦虑!