扩展知识点--利用Linux应用代码如何控制LED

关键知识点:

1、brightness:设置亮度的意思,该属性文件可读可写。

2、trigger:表示触发模式,timer表示被定时器控制住。

关键应用代码的实现过程:

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <unistd.h>

#include <string.h>

#define LED_TRIGGER "/sys/class/leds/sys-led/trigger"

#define LED_BRIGHTNESS "/sys/class/leds/sys-led/brightness"

#define USAGE() fprintf(stderr, "usage: " " %s " " %s ", argv[0], argv[0])

int main(int argc, char *argv[])

{ int fd1, fd2;

/* 校验传参 */

if (2 > argc)

{

USAGE();

exit(-1);

}

/* 打开文件 */

fd1 = open(LED_TRIGGER, O_RDWR);

if (0 > fd1) {

perror("open error");

exit(-1);

}

fd2 = open(LED_BRIGHTNESS, O_RDWR);

if (0 > fd2) {

perror("open error");

exit(-1);

}

//根据传参控制 LED

if (!strcmp(argv[1], "on")) {

write(fd1, "none", 4); //先将触发模式设置为 none

write(fd2, "1", 1); //点亮 LED

} else if (!strcmp(argv[1], "off")) {

write(fd1, "none", 4); //先将触发模式设置为 none

write(fd2, "0", 1); //LED 灭

}

else if (!strcmp(argv[1], "trigger")) { //设置时间判断

if (3 != argc) {

USAGE();

exit(-1);

}

if (0 > write(fd1, argv[2], strlen(argv[2])))

perror("write error");

}

else USAGE();

exit(0);

}

最终:可以利用应用层实现对底层驱动的控制逻辑,LED灯的亮灭。

核心:利用应用层来控制底层驱动,各个开发板的底层是一致的,多多思考。

经验分享 程序员 微信小程序 职场和发展