CHAPTER 05 / FIELD GUIDE
GPIO 输出:程序点亮 LED
第一次让软件改变真实电路。
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 暂停当前任务并让其他任务有机会运行。
- 断电接线,再检查电阻和极性。
- 烧录 02_blink,观察至少 10 个周期。
- 分别改为亮 100 ms、灭 900 ms,预测周期后验证。
- 用电压档测 GPIO4 对 GND。数字万用表刷新慢,不一定显示每个瞬间。
停下来想一想
亮 100 ms、灭 900 ms,与亮 500 ms、灭 500 ms,闪烁频率相同吗?
查看推导与答案
都是 1 Hz,因为周期都是 1000 ms。占空比分别是 10% 和 50%,频率与占空比是两个量。
本章验收
本章一手资料
卡住时可以直接向我提问:附上章节号、工程名、接线和第一条错误日志。