基于STM32F103精灵开发板点亮LED灯实战教程:以PA0为例

发布者:纯真年代最新更新时间:2025-09-28 来源: cnblogs关键字:STM32F103  点亮LED灯 手机看文章 扫描二维码
随时随地手机看文章

一、引言

嵌入式开发领域,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  点亮LED灯 引用地址:基于STM32F103精灵开发板点亮LED灯实战教程:以PA0为例

上一篇:STM32:从基础点灯到高级传感器控制的进阶之路
下一篇:STM32实战教程:SG90舵机控制原理深度解析及代码详解

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved