单手拿捏STM32 HAL库之点亮LED


作者:沈已成
b站视频链接: 还未制作,点击打开往期视频,持续更新中!!!

一、LED概述


  LED(Light Emitting Diode) 是==发光二极管==的缩写,它是一种半导体发光器件,当通电时会发出光,有体积小,重量轻,寿命长的优点,可发出多种颜色。通过选用不同的半导体材料,可制造出红、绿、蓝、黄、橙等多种颜色的LED。LED广泛应用于指示灯、背光源、交通信号灯、显示屏、照明等领域。随着技术的不断进步,LED正在逐步取代传统的白炽灯和荧光灯,成为一种节能环保的新型光源。

二、LED电路分析:


  核心板上的LED电路如下图由四部分组成,引脚PA2、LED灯、==限流电阻==、3.3V电源,我们知道二极管有单向导通的特性,所以根据电路图分析可得知当PA2引脚为低电平(0V)时,二极管可以被点亮,那么限流电阻有什么作用呢?LED对于电流非常敏感,限流电阻可以限制LED的工作电流,防止电流过大导致LED烧坏,也可以有效的提高LED的工作寿命。

在这里插入图片描述



三、CubeMx设置:


  上一节我们介绍了GPIO的基础知识,那我想提问一下这位吴彦祖(刘亦菲)点亮LED需要用到输入模式还是输出模式呢?没错,就是输出模式,因为点亮LED需要我们去控制外设,控制引脚为低电平从而点亮LED,明确思路后我们开始操作。时钟设置以及项目创建这里不再赘述。
  首先需要在右边的芯片图中找到LED引脚PA2,左键单击后选择==GPIO_OUTPUT==(GPIO输出模式)。

在这里插入图片描述

  该引脚变为绿色,说明设置成功。
在这里插入图片描述

  在左侧点击System Core展开下拉列表,再点击GPIO进入GPIO管理界面。
在这里插入图片描述

  单击引脚后下方会出现引脚设置的界面
  第一个选项是GPIO output level,其中有两个参数(high,low),这个选项决定了上电后该引脚的电平,如果设置为high,上电后为高电平,反之,上电后为低电平。
  第二个选项是GPIO MODE,里面的两个参数分别是Output Push Pull(推挽输出)、Output Open Drain(开漏输出),推挽输出可以输出高低电平,而开漏输出无法直接输出高电平,要借助外部上拉电阻,这里我们默认选择Output Push Pull即可。
  第三个选项是GPIO Pull-up/Pull-domn,其中有三个参数分别是Pull-up(上拉)、Pull-domn(下拉)、No Pull-up and no Pull-domn(既不上拉也不下拉),我们此时使用的是输出模式,所以默认选择既不上拉也不下拉,这样可以保证引脚能正确输出目标电平。
  第四个选项是Maximum output speed,即最大输出速度,选项中有三种不同的速度,分别是low(低)、medium(中)、high(高),速度越大,响应越快,但是功耗也会随之增加,这里我们默认选择Low即可。
  第五个选项是User Label,即用户自定义名字,这里我们可以设置为LED,或者你自己喜欢的名字,目的是方便我们识别对应的引脚,在后续的开发中,当引脚多起来的时候非常的好用。
在设置完毕后,引脚后的Modified选项会被自动打勾,说明这个引脚已被设置。

在这里插入图片描述

四、函数讲解:

(1) HAL_Delay(); //延时函数

函数原型:

void HAL_Delay(uint32_t Delay); //延时函数

  HAL_Delay(uint32_t Delay)是HAL库中提供的一个延时函数,它的作用是在指定的时间内暂停程序的执行。函数中的参数就是设置暂停程序的时间,单位为毫秒(ms)。但是,HAL_Delay() 函数会阻塞程序的执行,在延时期间无法执行其他任务。
  HAL_Delay() 函数提供了一种简单易用的软件延时方式,适用于一些不太严格的延时需求。对于需要更精确延时控制的场合,可以自行实现基于硬件定时器的延时函数。

Tips:
1、在编程中,阻塞指的是一个函数或操作会暂停程序的执行,直到该函数或操作完成或满足某个条件。这种情况下,程序的执行会被"阻塞"在该函数或操作上,无法继续执行其他任务。
2、毫秒(ms)和秒(S)之间的换算 -> 1s = 1000ms

  因此,在某些需要避免阻塞状态出现的情况,HAL_Delay()需要慎重使用!!


使用示例:

HAL_Delay(1000); //延时1S(1000ms)

(2) HAL_GPIO_WritePin();//GPIO引脚状态设置函数


函数原型:

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

  HAL_WritePin()是 HAL库中提供的一个用于设置GPIO引脚状态的函数。它的作用是将指定的GPIO引脚设置为高电平或低电平。


参数含义:
1、GPIOx: 表示要操作的GPIO端口,可以是GPIOA、GPIOB、GPIOC等。

2、GPIO_Pin: 表示要操作的GPIO引脚,可以是GPIO_PIN_0、GPIO_PIN_1等。

3、PinState: 表示要设置的引脚状态,可以是GPIO_PIN_RESET(低电平)或GPIO_PIN_SET(高电平)。

  HAL_WritePin()函数提供了一种简单易用的方式来控制GPIO引脚的输出状态,适用于需要直接操作GPIO引脚的场景。对于更复杂的GPIO控制需求,可以进一步封装该函数或使用其他HAL库函数。

(3) HAL_GPIO_TogglePin():

函数原型:

HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

  HAL_GPIO_TogglePin是HAL库提供的一个函数,用于切换GPIO引脚的电平状态。

1、GPIOx: 要操作的 GPIO 端口,可以是 GPIOA、GPIOB、GPIOC 等。


2、GPIO_Pin: 要操作的 GPIO 引脚,可以是 GPIO_PIN_0、GPIO_PIN_1 等。


  每次调用 HAL_GPIO_TogglePin 函数,引脚的电平状态就会从高电平切换到低电平,或从低电平切换到高电平

  这个函数通常用于实现 LED 的闪烁或其他简单的 GPIO 控制操作。

五、点亮LED示例

#include "LED.h"

void LED()//点亮LED
{
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
}

void LED_Delay()//使用WritePin,闪烁周期是1s
{
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
	HAL_Delay(1000);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
	HAL_Delay(1000);
}

void LED_Toggle()//使用TogglePin,闪烁周期是500ms
{
	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_2);
	HAL_Delay(500);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值