OKT153-S核心板有两个可控的rgb-led灯,两个可控的黄色user-led灯以及一个蓝色heartbeat-led灯, 但是布局都是分开了,没放在一起,所以咱们就选择两个可控的黄色user-led灯 做流水灯,虽然少了一点,但是效果也是一样的。
直接上代码(led_run.c)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <string.h>
// 处理Ctrl+C信号:优雅退出,释放GPIO
void sigint_handler(int sig) {
printf("\n接收到退出信号,释放GPIO资源...\n");
//unexport_gpio(LED1_GPIO);
//unexport_gpio(LED2_GPIO);
exit(EXIT_SUCCESS);
}
int main() {
// 注册信号处理:按Ctrl+C时释放GPIO
signal(SIGINT, sigint_handler);
printf("Linux GPIO跑马灯启动(按Ctrl+C退出)\n");
//printf("LED1(GPIO%d) ↔ LED2(GPIO%d)\n", LED1_GPIO, LED2_GPIO);
// 跑马灯核心循环
while (1) {
// 第一步:LED1亮,LED2灭
system("echo 1 > /sys/class/leds/user0/brightness");
system("echo 0 > /sys/class/leds/user1/brightness ");
usleep(500 * 1000); // 延时500ms(1秒=1000000微秒)
// 第二步:LED1灭,LED2亮
system("echo 0 > /sys/class/leds/user0/brightness");
system("echo 1 > /sys/class/leds/user1/brightness ");
usleep(500 * 1000);
// 可选:增加全灭阶段,效果更明显
}
return 0;
}
============================================
交叉编译 /opt/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-linux-gnueabihf-gcc led_run.c -o led_run
6413d296-a808-4775-ab47-3f8bf787996b-image.png
============================================
拷贝到板子上直接运行
851e18cf-f484-4eab-b64c-1f6da54e0ad9-image.png
效果图: