点亮 LED

 

目录

知识要点

课程内容

基础学习

LED 灯基本知识

程序学习

cubeMX 中配置 GPIO 基本操作

HAL_GPIO_WritePin 函数讲解

程序流程

效果展示

进阶学习

三极管的通断特性

LED 的下拉电阻

硬件原理图上的限流电阻

课程总结

  1. 知识要点

    1. LED 灯基本知识
    2. 了解三极管的通断特性
    3. 硬件原理图上的上拉电阻与下拉电阻
    4. cubeMX 中配置 GPIO 基本操作

  2. 课程内容


    本课程中,将学习到如何点亮 LED 灯,了解 LED 基本原理以及简单硬件知识。通过使用 cubeMX 软件完成引脚的配置,再编写程序使得对应引脚的输出一个高电平,通过三极管通 断作用,电流将通过 LED,从而发光。

  3. 基础学习

    1. LED 灯基本知识


      LED 即发光二极管,当 LED 内有电流通过时会发光,在安全电流范围内,电流越大,亮度 越亮。LED 灯实物如图所示:

       

  4. 程序学习

    1. cubeMX 中配置 GPIO 基本操作

      1. 通过原理图可以看出三个 LED 灯的引脚为 PH10,PH11,PH12,如图所示:


         

      2. 在 cubeMX 中配置 GPIO 为输出模式,在 cubeMX 找到对应引脚,配置成 GPIO_Output 模式。


         

      3. 在 cubeMX 中修改对应引脚的名字。

        1. 在左侧找到 System core->GPIO;

        2. 找到对应的 GPIO,例如 PH12;

        3. 在下方的配置单中 user label 填写命名,填好后会在芯片缩略图中更新。


           

        4. 生成代码


          点击 GENERATE CODE 按键。

    2. 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:PinStateGPIO_PIN_RESET:输出低电平 GPIO_PIN_SET:输出高电平

    3. 程序流程


      程序经过 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);

      程序流程图如图所示:


       

    4. 效果展示


      由于三色 LED 均点亮,红,绿,蓝三色为三原色,合成白光

    5. 进阶学习

      1. 三极管的通断特性


        从 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 线路断开。

      2. 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 是配置引脚不上拉也不下拉。


         

      3. 硬件原理图上的限流电阻


        LED 灯需要在一个合适的电流范围内工作,所以需要一个限流电阻来限制其电流,如下图 的 R177、R178、R179。限流电阻保证电路中通过 LED 的电流不超过其额定电流。此外, 还可以用于调节 LED 的亮度。


         如上图所示,在 LED 的原理图上,存在三个限流电阻。其中,绿灯的限流电阻较大,蓝灯 的限流电阻较小,由于人眼对于不同波长的光敏感程度不同,即人对于相同光强的不同波长 的光感受到亮度不同,绿光最为敏感,绿灯需要通过较小的电流,红灯需要通过正常的电流, 蓝灯需要通过较大的电流,保证人眼看到三个 LED 灯亮度相同。

    6. 课程总结


      GPIO 输出操作是 stm32 中最基础的操作,通过高低电平控制完成一次类似开关的控制,而 高电平对应了计算机中的数字 1,而低电平对应了计算机中的数字 0,高低电平的不断变化, 对应计算机内部的数字变化,stm32 便是这样输出信号给外部世界。之外本节课还了解 LED灯,三极管,电阻的使用,这些是机器人中常用的器件,LED 通过灯效形式呈现,给参赛队 队员提醒。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值