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 的复用/输出模式有哪些区别,又为何要有这些。