零基础快速上手 STM32 开发之实践开发 🚀

Calvert Lee
2025-04-07
点 赞
0
热 度
10
评 论
0

文章摘要

墨方GPT

💡 本篇为《零基础快速上手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 speed

  • PA2: Output push-pull, No pull, Low speed

  • PB1: Input, Pull-up

  • PB2: Input, Pull-up

3️⃣ 生成工程代码

点击 Project -> Generate Code,选择打开 STM32CubeIDE
编译并打开 main.c 文件。

4️⃣ 编写控制代码

main.cwhile(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 灯是否点亮 💡

🧩 常见痛点 & 解决方案

问题

解决方案

LED不亮

检查引脚连接是否正确,GPIO是否配置成输出

按键无效

注意 PC13 默认无内部上拉,建议手动配置或使用外接上拉电阻

下载失败

检查 ST-Link 驱动是否安装、开发板是否供电

🆘 提示:PC13 在某些开发板上连接的是高阻输入,响应慢,可更换为别的IO测试。

🏁 写在最后

从点亮一个小小的 LED 开始,STM32 的世界就这样慢慢向你展开了。

🌱 这只是第一步,后续你可以尝试:

  • 多LED控制

  • PWM呼吸灯

  • 串口打印调试信息

  • 连接传感器进行数据读取…

如果你也曾为“点不亮一个灯”抓耳挠腮,不妨收藏这篇文章,让入门不再焦虑!


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

Calvert Lee

infj 提倡者

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

文章目录

欢迎来到Calvert的站点,为您导航全站动态

5 文章数
6 分类数
0 评论数
14标签数
最近评论

访问统计