08. 点亮LED

发布时间 2023-10-03 21:18:56作者: 夏冰翎

一、LED简介

  发光二极管,简称为 LED,是一种常用的发光器件,它由含 镓(Ga)、砷(As)、磷(P)、氮(N)等的 化合物 制成。通过 电子空穴 复合释放能量发光,它在照明领域应用广泛。

  发光二极管与普通二极管一样是由一个 PN结 组成,也具有 单向导电性。当给发光二极管加上 正向电压 后,从 P区 注入到 N区 的 空穴 和由 N区 注入到 P区 的 电子,在 PN结 附近数微米内分别与 N区 的 电子 和 P区 的 空穴 复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。发光二极管的 反向击穿电压 大于5伏。它的 正向伏安特性曲线 很陡,使用时必须 串联限流电阻 以控制通过二极管的电流。

二、原理图

LED灯模块

LED引脚图

三、程序设计

  LED 初始化函数

void LED_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOC_CLK_ENABLE();                             // 使能GPIOC的时钟
  
  GPIO_InitStruct.Pin = GPIO_PIN_0;                         // 选择GPIO的引脚
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;               // 设置为推挽输出模式
  GPIO_InitStruct.Pull = GPIO_NOPULL;                       // 不使用上下拉
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;             // 设置GPIO的输出速度为高速
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);                   // GPIO初始化函数
  
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);       // 默认输出高电平,LED熄灭
}

  点亮 LED:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);       // 输出低电平,点亮LED

  熄灭 LED:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);         // 输出高电平,熄灭LED

  LED 闪烁:

HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);                      // GPIO状态翻转,LED 闪烁
HAL_Delay(500);                                            // 延迟500毫秒

  时钟初始化函数 请在 STM32F1的时钟树 篇章查看;

  main() 函数:

int main(void)
{
  HAL_Init();                                              // HAL库初始化

  system_stm32_clock_init(RCC_PLL_MUL9);                   // 时钟初始化

  LED_Init();
  
  while (1)
  {
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);  // 输出低电平,点亮LED
    HAL_Delay(500);					   // 延迟500毫秒
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);    // 输出高电平,熄灭LED
    HAL_Delay(500);					   // 延迟500毫秒
  }
}