04 · GPIO 与 Blinky
官方 Blinky 通过 GPIO API 翻转 LED。它要求板卡设备树存在 led0 别名,并且该节点有可用的 gpios 属性。
先确认 LED
经典 ESP32-DevKitC 不保证有用户 LED。不要把板上的电源灯当作 GPIO LED,也不要假设所有 ESP32 都使用 GPIO2。
没有用户 LED 时,可以外接一颗普通 LED:断电后,将确认可用的输出 GPIO 通过约 330 Ω 限流电阻连接 LED 正极,LED 负极接 GND。下例只假设经典 ESP32 板上 GPIO18 空闲且已正确接线;它不适用于未经核对的其他 ESP32 系列板卡。
准备独立 overlay
在 Zephyr 工作区下创建应用配置目录,不修改官方板卡 DTS:
mkdir -p ~/Projects/zephyr-workspace/applications/blinky-config
保存为 ~/Projects/zephyr-workspace/applications/blinky-config/app.overlay:
#include <zephyr/dt-bindings/gpio/gpio.h>
/ {
aliases {
led0 = &learning_led;
};
learning_leds {
compatible = "gpio-leds";
learning_led: led_0 {
gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
label = "Learning LED";
};
};
};
该接线在输出高电平时亮,所以用 GPIO_ACTIVE_HIGH。如果你的实际电路低电平点亮,应根据原理图调整极性。
编译与烧录
cd ~/Projects/zephyr-workspace/zephyr
west build -p always -b esp32_devkitc/esp32/procpu \
samples/basic/blinky -d build/blinky -- \
-DDTC_OVERLAY_FILE="$HOME/Projects/zephyr-workspace/applications/blinky-config/app.overlay"
west flash -d build/blinky
观察 LED 周期性闪烁。若报 led0 / DT_N_ALIAS 相关错误,先检查编译输出是否加载了指定 overlay,以及最终的 build/blinky/zephyr/zephyr.dts 是否包含别名。
检查点
- 接线和所选 GPIO 有硬件依据,确认没有被其他外设占用。
- 编译日志确认加载了正确的 overlay。
- 实际 LED 会闪烁,并记录周期及高低电平含义。
- 将接线图和实验结果补进自己的笔记。
本页未做实板验证。下一步:设备树如何连接硬件与代码。
官方来源
基于 Zephyr v4.2.0 官方资料整理的中文学习笔记,非逐字翻译;命令及说明作了学习场景适配。