1. 项目概述:从零玩转STM32基础外设
作为一名嵌入式开发者,我经常被问到如何快速上手STM32开发。今天就用一个经典案例——LED流水灯结合按键中断,带大家体验STM32CubeMX+HAL库的高效开发模式。这个项目虽然基础,但涵盖了GPIO输出控制、外部中断、时钟配置等核心知识点,是STM32入门的最佳练手项目。
使用STM32CubeMX工具配合HAL库,可以省去大量底层寄存器配置时间。我实测从新建工程到完成功能,整个过程不超过15分钟。相比标准外设库,HAL库的硬件抽象层设计让代码移植性大幅提升,特别适合需要快速验证方案的场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与CubeMX工程配置
2.1 硬件选型与连接方案
我手头用的是STM32F103C8T6最小系统板(蓝色PCB那种),成本不到20元。你需要准备:
- 开发板 x1
- LED灯 x4(颜色随意)
- 220Ω电阻 x4
- 轻触按键 x1
- 10kΩ电阻 x1(按键上拉用)
- 杜邦线若干
硬件连接注意三点:
- LED阳极接3.3V,阴极通过电阻接GPIO(这样配置输出低电平点亮)
- 按键一端接地,另一端接GPIO和上拉电阻
- 确保所有GPIO电压等级匹配(别接到5V容忍引脚以外的端口)
2.2 CubeMX关键配置步骤
打开CubeMX新建工程后:
- 在Pinout视图直接点击芯片引脚选择功能:
- PC13~PC10:GPIO_Output(接LED)
- PA0:GPIO_EXTI0(接按键)
- 时钟配置切换到Clock Configuration标签:
- HCLK设为72MHz(F103的最高主频)
- 确保SYSCLK来源为PLLCLK
- 项目设置Project Manager标签:
- Toolchain选MDK-ARM(如果用Keil)
- 勾选"Generate peripheral initialization as a pair of .c/.h"
关键技巧:配置EXTI时,在NVIC Settings中一定要开启对应中断线(如EXTI line0 interrupt)的使能,否则按键无反应。
3. HAL库代码实现解析
3.1 LED流水灯核心逻辑
生成的工
