STM32F103的流水灯点亮

本文详细描述了使用STM32F103微控制器通过GPIO引脚和C代码实现流水灯效果的过程,包括STM32CubeMX配置、GPIO设置、LED控制循环和延时等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

本实验旨在使用STM32F103微控制器来实现一个简单的流水灯效果。通过配置GPIO引脚并编写C代码,我们成功地点亮了一系列LED,以创建流水灯效果。实验过程中,我们学习了如何使用STM32CubeMX和HAL库进行GPIO配置和控制。

引言

STM32F103是一款基于ARM Cortex-M3内核的微控制器,具有丰富的外设和强大的性能。在本实验中,我们将利用STM32F103的GPIO引脚来控制LED,从而实现一个简单的流水灯效果。这个实验旨在帮助我们熟悉STM32F103的开发环境和GPIO控制。

准备工作

使用STM32CubeMX创建一个新的工程,选择适当的目标板型号和设置。
在STM32CubeMX中配置GPIO引脚,将它们设置为输出模式,并分配给LED。

程序设计思路

时钟配置:首先,需要配置系统时钟以及GPIOx的时钟。这通常涉及设置RCC(Reset and Clock Control)寄存器。

GPIO配置:配置GPIOA、GPIOB、GPIOC的相应端口为输出模式,以控制LED。每个GPIO端口的配置都涉及CRH(High Control Register)和CRL(Low Control Register)寄存器的设置。

LED控制循环:在一个无限循环中,点亮一个LED并熄灭其他LED。为了轮流控制LED,可以使用一个变量来跟踪当前点亮的LED。

延时:使用延时函数等待一段时间,通常是1秒。

更新LED:更新LED的控制变量,以便下一轮轮流闪烁。

寄存器地址和详细参数

RCC(Reset and Clock Control)寄存器:配置系统时钟。

RCC_APB2ENR:启用GPIOA、GPIOB和GPIOC的时钟。
GPIOA、GPIOB和GPIOC寄存器:配置端口为输出模式,以控制LED。

GPIOx_CRL和GPIOx_CRH:控制端口模式和速度。
CNFy[1:0]:00代表推挽输出。
MODEy[1:0]:01代表输出最大速度2 MHz。
GPIOx_BSRR:设置或清除引脚状态。
BSy:1代表设置引脚,0代表清除引脚。
BRy:1代表清除引脚,0代表设置引脚。

对于每个GPIO端口,我们将配置CRH和CRL寄存器以设置相应引脚的模式和速度,BSRR寄存器以设置引脚状态(高电平点亮,低电平熄灭)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在STM32CubeMX中生成初始化代码,包括HAL库的配置。

打开生成的工程,在main.c文件中编写C代码来实现流水灯效果。


#define GPIOB_BASE 0x40010C00
#define GPIOC_BASE 0x40011000
#define GPIOA_BASE 0x40010800

#define RCC_APB2ENR (*(unsigned int *)0x40021018)

#define GPIOB_CRL (*(unsigned int *)0x40010C00
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值