文章目录
- 前言
- 一、STM32点亮LED灯的原理
- 1.1GPIO是什么
- 1.2点亮LED灯的原理
- 二、STM32Cubemx创建工程
- 三、proteus仿真电路图
- 四、程序代码编写
- 1.LED灯操作函数介绍
- HAL_GPIO_WritePin
- 函数原型
- 参数说明
- 示例代码
- HAL_GPIO_TogglePin
- 函数原型
- 参数说明
- 示例代码
- 2.代码编写
- 3.烧写程序
- 总结
前言
本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习,第一节课我们先来学习点亮LED灯。
proteus使用8.9版本。
STM32Cubemx使用6.3版本。
一、STM32点亮LED灯的原理
1.1GPIO是什么
GPIO(General-Purpose Input/Output,即通用输入输出)是微控制器上的一种通用引脚。GPIO引脚可以配置为输入或输出模式,用来读取外部信号(如按钮按下的状态)或控制外部设备(如点亮LED灯)。GPIO是微控制器与外部世界交互的重要接口,广泛应用于嵌入式系统中。
GPIO的基本功能
输入模式:引脚可以读取外部设备的状态,例如开关、按钮等。
输出模式:引脚可以输出高电平或低电平信号,用来控制外部设备,例如LED灯、继电器等。
中断功能:某些GPIO引脚可以配置为中断模式,当引脚状态发生变化时触发中断。
复用功能:有些GPIO引脚可以复用为其他外设功能,例如UART、SPI、I2C等。
1.2点亮LED灯的原理
1.配置GPIO引脚
首先,需要将微控制器的某个GPIO引脚配置为输出模式。以STM32为例,通常需要以下步骤:
使能GPIO时钟:在配置GPIO之前,需要使能对应的GPIO端口时钟。例如,使用GPIOA端口时,需要使能GPIOA的时钟。
配置引脚模式:将对应引脚配置为输出模式。
配置引脚类型和速度:可以选择推挽输出或开漏输出,并设置输出速度(低速、中速、高速)。
2.控制GPIO引脚输出
配置好GPIO引脚后,可以通过控制引脚的电平来点亮或熄灭LED灯。LED灯通常连接在GPIO引脚与地之间(阳极接GPIO引脚,阴极接地),或者GPIO引脚与Vcc之间(阴极接GPIO引脚,阳极接Vcc)。
点亮LED:将GPIO引脚输出低电平(0V),电流从Vcc流经LED到地,LED点亮。
熄灭LED:将GPIO引脚输出高电平(3.3V或5V),LED两端电压相同,无电流流过,LED熄灭。
3.完整流程
使能时钟:启用GPIO端口的时钟。
初始化引脚:配置GPIO引脚为输出模式。
控制电平:通过设置引脚的高低电平来控制LED灯的点亮与熄灭。
二、STM32Cubemx创建工程
1.选择芯片型号:
2.配置Debug:
3.配置时钟
4.设置时钟树
输入72双击回车即可。
5.工程配置
6.选择一个引脚作为输出引脚,用于点亮LED灯
三、proteus仿真电路图
1.创建工程
2.添加对应的元器件
3.元器件放置
这里还需要注意电阻值的大小,电阻假如太大的可能会导致LED灯无法被点亮。
4.STM32时钟主频设置
这里设置成72MHZ和STM32Cubemx中设置的保持一致
5.提供配电网
四、程序代码编写
1.LED灯操作函数介绍
在STM32 HAL库中,HAL_GPIO_WritePin
和HAL_GPIO_TogglePin
是两个常用的GPIO控制函数。下面详细讲解它们的功能和使用方法。
HAL_GPIO_WritePin
HAL_GPIO_WritePin
函数用于设置指定GPIO引脚的电平状态。这个函数可以将GPIO引脚设置为高电平或低电平,以控制连接到该引脚的外部设备(如LED灯)。
函数原型
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
参数说明
GPIOx
: 指定GPIO端口基地址,具体可以是GPIOA
,GPIOB
,GPIOC
等。GPIO_Pin
: 指定GPIO引脚,使用宏定义,如GPIO_PIN_0
,GPIO_PIN_1
等。可以通过按位或运算指定多个引脚,例如GPIO_PIN_0 | GPIO_PIN_1
。PinState
: 指定引脚状态,可以是以下值之一:GPIO_PIN_RESET
(低电平)GPIO_PIN_SET
(高电平)
示例代码
// 将GPIOA的第5个引脚设置为低电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);// 将GPIOA的第5个引脚设置为高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_TogglePin
HAL_GPIO_TogglePin
函数用于切换指定GPIO引脚的电平状态。如果引脚当前是高电平,则切换为低电平;如果引脚当前是低电平,则切换为高电平。这个函数常用于控制需要反复切换状态的设备,例如闪烁的LED灯。
函数原型
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
参数说明
GPIOx
: 指定GPIO端口基地址,具体可以是GPIOA
,GPIOB
,GPIOC
等。GPIO_Pin
: 指定GPIO引脚,使用宏定义,如GPIO_PIN_0
,GPIO_PIN_1
等。可以通过按位或运算指定多个引脚,例如GPIO_PIN_0 | GPIO_PIN_1
。
示例代码
// 切换GPIOA的第5个引脚的电平状态
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
2.代码编写
3.烧写程序
将对应的hex文件选择进去。
运行程序
LED灯被点亮:
总结
本篇文章就讲解到这里,大家有什么疑问都可以留言。
本篇文章代码和工程将放在微信公众号中。
回复 STM32仿真LED
即可领取源码和工程。