CHAPTER 05 / FIELD GUIDE

GPIO 输出:程序点亮 LED

第一次让软件改变真实电路。

建议用时 35 分钟先预测,再实验,再解释

GPIO 是受控的电平端口

输出模式下,我们让引脚输出高或低电平。电流能力有限,因此这里仅驱动串联电阻的小 LED。电机、继电器、大功率灯需要驱动电路。

接线

GPIO4→330 Ω→LED 阳极 / 阴极→GND

与第 01 章相比,把电源端从 3V3 换成 GPIO4。这里的 4 是丝印 GPIO 编号,不是从排针顶端数第四个孔。板载 RGB 灯涉及不同协议和版本引脚,先不使用。

实验工程 · 02_blink

LED 亮 500 ms、灭 500 ms。一个完整周期是 1 秒。

打开 main.c · 查看公共驱动 lab.c · 下载全部工程

#include "lab.h"
void app_main(void) {
    led_init();
    for(;; ) {
        gpio_set_level(LED,1);
        vTaskDelay(pdMS_TO_TICKS(500));
        gpio_set_level(LED,0);
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

看懂公共驱动

打开 lab.c 中的 led_init:设置 GPIO4 为输出并初始化为低电平。gpio_set_level 修改输出;vTaskDelay 暂停当前任务并让其他任务有机会运行。

  1. 断电接线,再检查电阻和极性。
  2. 烧录 02_blink,观察至少 10 个周期。
  3. 分别改为亮 100 ms、灭 900 ms,预测周期后验证。
  4. 用电压档测 GPIO4 对 GND。数字万用表刷新慢,不一定显示每个瞬间。
停下来想一想

亮 100 ms、灭 900 ms,与亮 500 ms、灭 500 ms,闪烁频率相同吗?

查看推导与答案

都是 1 Hz,因为周期都是 1000 ms。占空比分别是 10% 和 50%,频率与占空比是两个量。

本章验收

本章一手资料

卡住时可以直接向我提问:附上章节号、工程名、接线和第一条错误日志。