基于youyeetoo K1 的 GPIO 控制完整教程,包含 LED 和蜂鸣器控制示例
本主板提供 17 个 GPIO 引脚,分为两类:
CPU GPIO(10个)
CGP1,CGP3,CGP5,CGP7,CGP9 -> (电压支持范围: 0 ~ 3.3V)CGP2,CGP4,CGP6,CGP8, CGP10 -> (电压支持范围: 0 ~ 1.8V)
Super I/O GPIO(7个)
GP1, GP2, GP3, GP4, GP5, GP6, GP8 -> (电压支持范围: 0 ~ 3.3V)
本教程使用的是集成模块,包含 3 个 LED 和 1 个蜂鸣器,模块已内置限流电阻和驱动电路。

模块接线:
| 模块引脚 | 连接到 | 说明 |
|---|---|---|
| 5V | 电源 5V | 供电 |
| GND | 电源 GND | 地线 |
| G_IN | GPIO 引脚 | 绿色 LED 控制 |
| Y_IN | GPIO 引脚 | 黄色 LED 控制 |
| R_IN | GPIO 引脚 | 红色 LED 控制 |
| B_IN | GPIO 引脚 | 蜂鸣器控制 |
示例接线方案:
5V ──→ 5V 电源
GND ──→ GND
G_IN ──→ CGP1 (绿色 LED)
Y_IN ──→ CGP5 (黄色 LED)
R_IN ──→ CGP9 (红色 LED)
B_IN ──→ CGP3 (蜂鸣器)
控制方式:
本教程测试环境:
权限要求:
注:其他 Linux 发行版理论上也可用,但未经测试
注意:需要联网下载安装
安装必要的编译工具:
# 更新软件包列表(需要联网)
sudo apt update
# 安装编译工具链(包含 gcc, g++, make 等)
sudo apt install build-essential
# 安装内核头文件(用于编译驱动)
sudo apt install linux-headers-$(uname -r)
验证安装:
# 检查 gcc 版本
gcc --version
# 检查 make 版本
make --version
说明:build-essential 包含了 gcc、g++、make 等编译工具,一次安装即可。
# 解压压缩包
test@test-K1-SBC:~$ unzip K1linux-gpio.zip
Archive: K1linux-gpio.zip
creating: linux-gpio/
inflating: linux-gpio/alarm_system.sh
inflating: linux-gpio/buzzer_test.sh
creating: linux-gpio/drv/
inflating: linux-gpio/drv/.module-common.o
inflating: linux-gpio/drv/fhl_x86gpio_drv.c
extracting: linux-gpio/drv/fhl_x86gpio_drv.mod
inflating: linux-gpio/drv/Makefile
inflating: linux-gpio/IOApp.cpp
inflating: linux-gpio/IOApp.h
inflating: linux-gpio/led_blink.sh
inflating: linux-gpio/led_flow.sh
inflating: linux-gpio/LinuxGPIO.cpp
inflating: linux-gpio/LinuxGPIO.h
inflating: linux-gpio/Makefile
inflating: linux-gpio/README.md
inflating: linux-gpio/README_CN.md
inflating: linux-gpio/setup.sh
inflating: linux-gpio/test_gpio.cpp
# 进入项目目录
cd linux-gpio
# 赋予所有脚本执行权限
chmod +x *.sh
# 一键编译
test@test-K1-SBC:~$ ./setup.sh
========================================
GPIO Project Setup
========================================
...
========================================
✓ Setup completed!
========================================
Generated files:
• fhl_x86gpio_drv.ko - Kernel driver module
• test_gpio - GPIO control program
Next steps:
1. Load driver:
sudo insmod fhl_x86gpio_drv.ko
2. Test GPIO:
sudo ./test_gpio CGP1 out high
3. Run scripts:
sudo ./led_blink.sh
To unload driver:
sudo rmmod fhl_x86gpio_drv
Available scripts:
• led_blink.sh - LED blink test
• led_flow.sh - Flow light effect
• buzzer_test.sh - Buzzer test
• alarm_system.sh - Alarm system demo
========================================
编译成功后会生成:
fhl_x86gpio_drv.ko - 内核驱动模块test_gpio - GPIO 控制程序# 加载驱动(需要 root 权限)
test@test-K1-SBC:~/linux-gpio$ sudo insmod fhl_x86gpio_drv.ko
[sudo] password for test:
# 验证驱动是否加载成功
test@test-K1-SBC:~/linux-gpio$ lsmod | grep fhl_x86gpio_drv
fhl_x86gpio_drv 12288 0
# 检查设备文件
test@test-K1-SBC:~/linux-gpio$ ls -l /dev/fhlx86gpio
crw------- 1 root root 10, 122 9月 9 16:17 /dev/fhlx86gpio
# 设置 CGP1 输出高电平
test@test-K1-SBC:~/linux-gpio$ sudo ./test_gpio CGP1 out high
GPIO Open Success
SUCCESS: CGP1 set to output HIGH
# 设置 CGP1 输出低电平
test@test-K1-SBC:~/linux-gpio$ sudo ./test_gpio CGP1 out low
GPIO Open Success
SUCCESS: CGP1 set to output LOW
# 读取 CGP9 输入状态
test@test-K1-SBC:~/linux-gpio$ sudo ./test_gpio CGP9 in
GPIO Open Success
read cpu io,ret=0X800102
SUCCESS: CGP9 input level: HIGH (1)
sudo ./test_gpio <引脚名> <模式> [电平]
CGP1-CGP10 或 GP1-GP6, GP8out - 输出模式in - 输入模式high - 高电平low - 低电平# 输出模式
sudo ./test_gpio CGP1 out high # CGP1 输出高电平
sudo ./test_gpio CGP2 out low # CGP2 输出低电平
sudo ./test_gpio GP3 out high # GP3 输出高电平
# 输入模式
sudo ./test_gpio CGP9 in # 读取 CGP9 输入状态
sudo ./test_gpio GP2 in # 读取 GP2 输入状态
项目提供了 4 个开箱即用的示例脚本,默认配置与上述接线方案对应:
sudo ./led_blink.sh

功能:默认使用 CGP1 引脚,可改为模块的任意 LED 输入(G_IN/Y_IN/R_IN)
可配置参数(编辑脚本修改):
PIN="CGP1" - 更改为对应的 GPIO 引脚(如 CGP2``CGP3等等 )INTERVAL=1 - 更改闪烁间隔(秒)sudo ./led_flow.sh

功能:3 个 LED(G_IN、Y_IN、R_IN)依次点亮
默认配置:
PINS=("CGP1" "CGP5" "CGP9") - 对应 G_IN, Y_IN, R_ININTERVAL=0.2 - 流水速度(秒)sudo ./buzzer_test.sh

功能:蜂鸣器(B_IN)响 5 次
默认配置:
PIN="CGP3" - 对应 B_INBEEP_COUNT=5 - 鸣叫次数BEEP_DURATION=0.3 - 鸣叫时长(秒)BEEP_INTERVAL=0.3 - 鸣叫间隔(秒)sudo ./alarm_system.sh

功能:LED(R_IN)和蜂鸣器(B_IN)同步闪烁/鸣叫,循环播放
默认配置:
LED_PIN="CGP1" - 可改为 CGP9(R_IN)BUZZER_PIN="CGP3" - 对应 B_INALARM_CYCLES=10 - 每轮报警次数ALARM_SPEED=0.2 - 报警速度(秒)停止脚本:按 Ctrl+C
原因:驱动未加载
解决:
sudo insmod fhl_x86gpio_drv.ko
原因:权限不足
解决:使用 sudo 运行命令
sudo ./test_gpio CGP1 out high
检查清单:
sudo?检查清单:
# 卸载驱动
sudo rmmod fhl_x86gpio_drv
# 检查是否卸载成功
lsmod | grep fhl_x86gpio_drv