STM32F103 点亮LED灯
1. 项目概述
在本项目中,我们将使用 STM32F103C8T6 开发板,通过 HAL(Hardware Abstraction Layer)库 控制 PC13 引脚 让 LED 以 1 秒间隔闪烁。
2. 硬件设计
2.1 硬件需求
- STM32F103C8T6 最小系统开发板
- USB 转串口模块(用于烧录程序)
2.2 硬件连接
PC13 通常连接到开发板上的 板载 LED,如果要使用外部 LED,请按照以下方式连接:
- PC13 → LED 正极
- LED 负极 → 220Ω 电阻 → GND
3. 软件设计
3.1 STM32 HAL 库简介
HAL 库是 ST 官方提供的 硬件抽象库,封装了底层寄存器操作,使开发更加简单。
3.2 工程创建步骤(基于 STM32CubeMX)
- 打开 STM32CubeMX,创建新工程,选择 STM32F103C8T6。
- 配置 PC13 作为 GPIO 输出模式,找到 "PC13",设置为 GPIO_Output。
- 配置时钟(默认 72MHz,无需修改)。
- 生成代码,选择 IDE 为 STM32CubeIDE 或 Keil。
4. 代码实现
在生成的 HAL 工程基础上,我们修改 main.c 实现 LED 闪烁。
4.1 main.c 代码
#include "main.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
/**
* @brief GPIO 配置初始化
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOC_CLK_ENABLE(); // 使能 GPIOC 时钟
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 初始化 GPIOC
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // 默认关闭 LED
}
int main(void)
{
HAL_Init(); // 1.初始化 HAL 库
SystemClock_Config(); // 2.配置系统时钟
MX_GPIO_Init(); // 3.初始化 GPIO
while (1) // 4.循环闪亮 LED
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 切换 PC13 状态
HAL_Delay(1000); // 延时 1000ms
}
}
4.2 代码解析
HAL_Init():初始化 HAL 库。SystemClock_Config():配置时钟。MX_GPIO_Init():初始化 PC13 为 推挽输出模式。HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13):每次调用 翻转 LED 状态。HAL_Delay(1000):延时 1 秒,实现 LED 闪烁。
5. 烧录与测试
5.1 烧录步骤

- 连接 USB 转串口模块
- RX → A9,TX → A10,GND → GND
- 进入 Bootloader 模式
- BOOT0 拉高(接 VCC),RESET 按一下。
- 使用 STM32CubeProgrammer 或 Flash Loader 烧录代码。
- 烧录完成后,BOOT0 复位(接 GND),按下 RESET 运行程序。
6. 总结
本教程介绍了 STM32F103C8T6 通过 HAL 库 控制 PC13 LED 闪烁 的详细过程,包括 硬件设计、软件配置、代码编写、烧录步骤。希望能帮助你快速入门 STM32 开发!

浙公网安备 33010602011771号