目录
-
知识要点
- LED 灯基本知识
- 了解三极管的通断特性
- 硬件原理图上的上拉电阻与下拉电阻
- cubeMX 中配置 GPIO 基本操作
-
课程内容
本课程中,将学习到如何点亮 LED 灯,了解 LED 基本原理以及简单硬件知识。通过使用 cubeMX 软件完成引脚的配置,再编写程序使得对应引脚的输出一个高电平,通过三极管通 断作用,电流将通过 LED,从而发光。 -
基础学习
-
LED 灯基本知识
LED 即发光二极管,当 LED 内有电流通过时会发光,在安全电流范围内,电流越大,亮度 越亮。LED 灯实物如图所示:
-
-
程序学习
-
cubeMX 中配置 GPIO 基本操作
-
通过原理图可以看出三个 LED 灯的引脚为 PH10,PH11,PH12,如图所示:
-
在 cubeMX 中配置 GPIO 为输出模式,在 cubeMX 找到对应引脚,配置成 GPIO_Output 模式。
-
在 cubeMX 中修改对应引脚的名字。
-
在左侧找到 System core->GPIO;
-
找到对应的 GPIO,例如 PH12;
-
在下方的配置单中 user label 填写命名,填好后会在芯片缩略图中更新。
-
生成代码
点击 GENERATE CODE 按键。
-
-
-
HAL_GPIO_WritePin 函数讲解
HAL 库中提供一个操作 GPIO 电平的函数:HAL_GPIO_WritePin 函数
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
函数名 HAL_GPIO_WritePin 函数作用 使得对应的引脚输出高电平或者低电平 返回值 Void 参数 1:GPIOx 对应 GPIO 总线,其中 x 可以是 A…I。 例如 PH10,则输入 GPIOH 参数 2:GPIO_Pin 对应引脚数。可以是 0-15。 例如 PH10,则输入 GPIO_PIN_10 参数 3:PinState GPIO_PIN_RESET:输出低电平 GPIO_PIN_SET:输出高电平 -
程序流程
程序经过 HAL_Init 初始化, GPIO 初始化,进入主循环,在主循环中将三个 LED 引脚均输 出高电平,从而点亮 LED 灯。主循环代码如下:
//set GPIO output high level //设置 GPIO 输出高电平 HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(LED_B_GPIO_Port, LED_B_Pin, GPIO_PIN_SET);
程序流程图如图所示:
-
效果展示
由于三色 LED 均点亮,红,绿,蓝三色为三原色,合成白光
-
进阶学习
-
三极管的通断特性
从 LED 的原理图上,看出 LED 的连线不直接连接到 stm32 引脚上,这是因为对于 stm32 来讲,引脚的输出电流能力有限,需要通过三极管来实现对 LED 灯的点亮与熄灭。常见的 三极管分为 NPN 型和 PNP 型,如图所示:
共同点 不同点 NPN 型 1.都具有三个连接点
2.都具有电流放大作用
3. 控制方式都是通过 B 点电平控制:
3.1.B 点处于高电平:CE 线导通
3.2 B 点处于低电平:CE 线不导通
当 B 点电压高于 E 点电压,三 极管导通,电流方向为 C 点到 E 点 PNP 型 当 B 点电压低于 E 点电压,三 极管导通,电流方向为 E 点到 C 点 在本设计中,三极管导通时工作在饱和状态,不导通时工作在截止状态;相当于一个开关, 而 B 点相当于按下开关的手,CE 点相当于开关连接的线路。当 B 点处于高电平时,开关闭 合,CE 线连通;当 B 点处于低电平的时候,开关断开,CE 线路断开。
-
LED 的下拉电阻
B 点电压对三级管具有控制作用,在程序未发生控制行为的时候,需要将电压控制到低电平, 保证器件不被意外触发,对于三极管来说主要为下拉电阻,之外还有上拉电阻,可以从 LED 原理图找到下拉电阻
从 LED 灯原理图中,当 LED_B,LED_G 和 LED_R 三个引脚不处于高电平的输出状态,那 么三极管的控制端将会被红圈圈中的下拉电阻拉为低电平,当 LED_B,LED_G 和 LED_R 处 于高电平的输出状态,通过原理图中 1kΩ与 10kΩ的分压后,三极管的基极控制端将变成 高电平,故而三级管的控制端电压将变成高电平。
在 cubeMX 中配置 stm32 的引脚,可以选择配置上拉电阻或者下拉电阻,如图所示。Pull-up 是配置引脚为上拉电阻,Pull-down 是配置引脚为下拉电阻,No pull-up and no pull-down 是配置引脚不上拉也不下拉。
-
硬件原理图上的限流电阻
LED 灯需要在一个合适的电流范围内工作,所以需要一个限流电阻来限制其电流,如下图 的 R177、R178、R179。限流电阻保证电路中通过 LED 的电流不超过其额定电流。此外, 还可以用于调节 LED 的亮度。
如上图所示,在 LED 的原理图上,存在三个限流电阻。其中,绿灯的限流电阻较大,蓝灯 的限流电阻较小,由于人眼对于不同波长的光敏感程度不同,即人对于相同光强的不同波长 的光感受到亮度不同,绿光最为敏感,绿灯需要通过较小的电流,红灯需要通过正常的电流, 蓝灯需要通过较大的电流,保证人眼看到三个 LED 灯亮度相同。
-
-
课程总结
GPIO 输出操作是 stm32 中最基础的操作,通过高低电平控制完成一次类似开关的控制,而 高电平对应了计算机中的数字 1,而低电平对应了计算机中的数字 0,高低电平的不断变化, 对应计算机内部的数字变化,stm32 便是这样输出信号给外部世界。之外本节课还了解 LED灯,三极管,电阻的使用,这些是机器人中常用的器件,LED 通过灯效形式呈现,给参赛队 队员提醒。
-