基于STM32F103精灵开发板点亮LED灯实战教程:以PA0为例
2025-09-28 来源:cnblogs
一、引言
在嵌入式开发领域,STM32系列单片机凭借其强大的性能和丰富的外设深受开发者喜爱。普中STM32 – F103 – 精灵开发板是初学者入门STM32开发的优质选择。点亮LED是STM32开发中最基础的实验之一,通过这个实验,我们可以熟悉开发板的GPIO(通用输入输出)功能,为后续更复杂的项目开发奠定基础。本文将详细介绍如何在上电后点亮连接在PA0引脚上的LED。

二、硬件连接原理
在普中STM32 – F103 – 精灵开发板上,LED的点亮原理基于GPIO端口的电平控制。一般来说,LED的阳极连接到开发板的电源(如3.3V),阴极通过限流电阻连接到STM32的GPIO引脚(这里是PA0) 。当PA0引脚输出低电平时,LED两端形成电压差,从而导通点亮;当PA0引脚输出高电平时,LED两端没有足够的电压差,LED熄灭。
三、开发环境搭建
(一)软件准备
1. 集成开发环境(IDE):推荐使用Keil MDK – ARM,它是一款专门用于ARM微控制器开发的集成开发环境,提供了丰富的调试和编译功能。下载并安装Keil MDK – ARM软件,安装过程中注意选择支持STM32F103系列芯片的组件。
2. STM32标准外设库:从ST官方网站下载适用于STM32F10x系列的标准外设库。该库包含了各种外设驱动的函数和示例代码,能大大简化开发过程。下载完成后,解压到合适的目录。
(二)硬件连接
确保开发板通过USB线连接到电脑,为开发板提供电源并用于程序下载和调试。如果开发板需要额外的电源配置,按照开发板说明书进行操作。
四、代码实现步骤
(一)新建工程
1. 打开Keil MDK – ARM软件,点击“Project” -> “New μVision Project”,选择合适的存储路径并命名工程(如“LED_PA0_Test”)。
2. 在弹出的“Select Device for Target ‘Target 1’”对话框中,找到并选择“STM32F103C8T6”(根据实际开发板芯片型号选择),点击“OK”。
3. 在弹出的“Manage Run – Time Environment”对话框中,勾选“CMSIS” -> “Core”以及“Device” -> “STM32F10x” -> “Startup”下的“startup_stm32f10x_md”(中等容量芯片启动文件),点击“OK”。
(二)配置工程
1. 将下载的STM32标准外设库中的“Libraries”文件夹下的“STM32F10x_StdPeriph_Driver”整个文件夹复制到工程目录下。
2. 在Keil MDK中,点击“Project” -> “Options for Target ‘Target 1’”,在“C/C++”选项卡中,点击“Include Paths”后面的按钮,添加以下路径:
– 工程目录下的“STM32F10x_StdPeriph_Driverinc”
– 工程目录下的“STM32F10x_StdPeriph_Driversrc”
3. 在“Target”选项卡中,根据开发板实际晶振频率设置“Xtal (MHz)”(一般为8MHz)。
(三)编写代码
1. 在工程中新建一个源文件(如“main.c”),并添加到工程中。在“main.c”中输入以下代码:
#include 'stm32f10x.h' // 包含STM32F10x系列的头文件
#include 'stm32f10x_gpio.h' // 包含GPIO相关的头文件
#include 'stm32f10x_rcc.h' // 包含RCC(复位和时钟控制)相关的头文件
// 延时函数
void Delay_ms(uint32_t nTime) {
uint32_t i, j;
for (i = 0; i < nTime; i++)
for (j = 0; j < 8400; j++);
}
int main(void) {
GPIO_InitTypeDef GPIO_InitStructure; // 定义GPIO初始化结构体
// 使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// 配置PA0引脚为通用推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1) {
GPIO_ResetBits(GPIOA, GPIO_Pin_0); // PA0输出低电平,点亮LED
Delay_ms(1000); // 延时1秒
GPIO_SetBits(GPIOA, GPIO_Pin_0); // PA0输出高电平,熄灭LED
Delay_ms(1000); // 延时1秒
}
}
2. 代码解释:
– 包含头文件: stm32f10x.h 是STM32F10x系列的总头文件, stm32f10x_gpio.h 用于GPIO操作, stm32f10x_rcc.h 用于时钟控制。
– 延时函数 Delay_ms :通过嵌套循环实现毫秒级延时,这里的参数是延时的毫秒数。
– main 函数:
– 定义 GPIO_InitTypeDef 结构体用于配置GPIO引脚。
– 使用 RCC_APB2PeriphClockCmd 函数使能GPIOA的时钟,因为PA0属于GPIOA端口。
– 配置PA0引脚为通用推挽输出模式,速度为50MHz。
– 在 while(1) 循环中,通过 GPIO_ResetBits 将PA0引脚置为低电平,点亮LED,延时1秒后,再通过 GPIO_SetBits 将PA0引脚置为高电平,熄灭LED,如此循环。
(四)编译与下载
1. 在Keil MDK中,点击“Project” -> “Rebuild all target files”对工程进行编译,确保没有错误和警告。
2. 使用ST – Link或其他支持的下载工具将生成的二进制文件下载到开发板中。下载完成后,开发板上电,即可看到连接在PA0引脚上的LED以1秒的间隔闪烁。
五、常见问题及解决方法
(一)LED不亮
1. 检查硬件连接:确认LED的阳极连接到电源,阴极正确连接到PA0引脚,且限流电阻连接正常,没有虚焊或短路情况。
2. 检查代码配置:检查是否正确使能了GPIOA的时钟,以及PA0引脚的模式配置是否正确。确保 GPIO_ResetBits 和 GPIO_SetBits 函数使用正确。
(二)程序编译错误
1. 头文件路径问题:检查“Include Paths”中添加的路径是否正确,确保能正确找到相关头文件。
2. 函数调用错误:仔细检查代码中函数的参数和调用方式是否符合STM32标准外设库的规范。
六、总结
通过本次实验,我们成功实现了在普中STM32 – F103 – 精灵开发板上点亮PA0引脚连接的LED。这个过程不仅让我们熟悉了STM32开发板的硬件连接和开发环境搭建,还掌握了GPIO端口的基本操作。在后续的开发中,我们可以基于此进一步拓展功能,如通过按键控制LED状态、实现多个LED的流水灯效果等。希望本文能对大家的STM32开发学习有所帮助。
- 基于STM32F103的AS5600磁编码器角度数据采集
- 基于STM32F103单片机的示波器设计
- STM32F103C8T6开发板+GY521制作无刷四轴飞控详细图文教程
- 入门STM32F103-GPIO输入
- STM32F103C8T6制作舵机/电调测试仪详细图文教程 | 定时器触发ADC | DMA传输 | PWM输出
- STM32F103的硬件I2C调试记录
- 【讲义】STM32的IAP技术,基于CAN总线的STM32F103 BootLoader设计
- 【 STM 系列 】STM32F103 流水灯仿真
- 基于STM32F103C8T6和L298N电机驱动模块调速实验NO.1
- 使用Makefile在Windows环境下编译STM32F103C8T6标准库工程,脱离Keil的指南
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




