Skip to content

点灯大师傅

本节教会使用HAL的库函数来点亮demo板上的灯

1. 硬件连接

下图所示,PC13 高电平的时候LED 为暗,低电平的时候为亮。 alt text

2. 生成代码

可以看到,配置了3个部分

  1. 外部时钟
  2. SWD 接口
  3. GPIO 配置成输出模式

外部晶振配置

alt text

SWD接口配置

如果不配置,会导致之后无法下载代码,请一定注意!! alt text

GPIO 配置

alt text

串口的代码配置

alt text

时钟配置

alt text

3.编写代码

在main 函数中放入LED的驱动函数即可

在while 的函数中添加如下的GPIO 的控制代码即可

3.1使用HAL 库的方式操作GPIO

GPIO_PIN_RESET :输出0
GPIO_PIN_SET :输出1

C
  while (1)
  {
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
    HAL_Delay(500);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    HAL_Delay(500);
  }

3.2 使用寄存器的方式操作

使用直接操作寄存器的方式可以减少判段,从而减少代码执行的时间,增加代码的效率。

C
  while (1)
  {
    GPIOC->BSRR = GPIO_PIN_13;//LOW
    HAL_Delay(100);
    GPIOC->BSRR = (uint32_t)GPIO_PIN_13 << 16u;//HIGH
    HAL_Delay(100);
  }

4.后记

想必看到这已经学会点灯了,那么GPIO还有一些可玩的地方

1.如何使得GPIO有最高的输出速度?影响GPIO翻转的原因有哪些。
2.GPIO 的复用/输出模式有哪些区别,又为何要有这些。