栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

14.Linux 控制LED灯设备

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

14.Linux 控制LED灯设备

驱动程序

本质:为硬件设备创建相应的设备节点文件

创建设备文件时,规定好设备文件的使用方式。

应用程序

根据驱动程序规定的设备文件使用方法去控制硬件

控制硬件设备步骤

1.找出硬件设备所对应的节点文件

两个地方:

①/dev目录下

对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件的全部特性

②/sys目录下

业余工程师使用,一个设备节点文件只控制硬件的一个特性

2、找出驱动程序规定的设备文件使用方式!

LED灯程序

①设备节点文件:/sys/class/leds

往brightness文件写入一个数值,就能控制led灯的亮度

led亮度值:0~255

sleep(1):在Linux系统里面是休眠的意思,这里也就是休眠1秒的意思

#include 
#include 
#include 
#include 
#include 
#include 
//开发板LED设备路径也就是节点文件
#define RLED_DEV_PATH "/sys/class/leds/red/brightness"
#define GLED_DEV_PATH "/sys/class/leds/green/brightness"
#define BLED_DEV_PATH "/sys/class/leds/blue/brightness"


int main(int argc,char *argv[])
{
        int r_fd,g_fd,b_fd;  //定义设备的文件描述符

        printf("This is the demon");
        //获取RLED设备的文件描述符
        r_fd = open(RLED_DEV_PATH,O_WRONLY);
        //当获取失败返回通知
        if(r_fd < 0){
                printf("Fail to open %s devicen",RLED_DEV_PATH);
                exit(1);
        }
        g_fd = open(GLED_DEV_PATH,O_WRONLY);
        if(g_fd < 0){
                printf("Fail to open %s devicen",GLED_DEV_PATH);
                exit(1);
        }

        b_fd = open(BLED_DEV_PATH,O_WRONLY);
        if(b_fd < 0){
                printf("Fail to open %s devicen",BLED_DEV_PATH);
                exit(1);
        }

        while(1){
                //红灯亮
                write(r_fd,"255",3);
                //休眠1秒
                sleep(1);
                //红灯闭
                write(r_fd,"0",1);

                write(g_fd,"255",3);
                sleep(1);
                write(g_fd,"0",1);

                write(b_fd,"255",3);
                sleep(1);
                write(b_fd,"0",1);
        }
}
ARCH ?= x86

ifeq ($(ARCH),x86)
        CC=gcc
else
        CC=arm-linux-gnueabihf-gcc
endif

TARGET=led
BUILD_DIR=build
SRC_DIR=.
INC_DIR=.
CFLAG=$(patsubst %,-I%,$(INC_DIR))
INCLUDES=$(foreach dir,$(INC_DIR),$(wildcard $(dir)/*.h))

SOURCES=$(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*.c))
OBJS=$(patsubst %.c,$(BUILD_DIR)/%.o,$(notdir $(SOURCES)))
VPATH=$(SRC_DIR)

$(BUILD_DIR)/$(TARGET):$(OBJS)
        $(CC) $^ -o $@

$(BUILD_DIR)/%.o:%.c $(INCLUDES) | create_build
                $(CC) -c $< -o $@ $(CFLAG)

.PHONY:clean create_build

clean:
                rm -r $(BUILD_DIR)

create_build:
                mkdir -p $(BUILD_DIR)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号