0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中LED驱动的应用层控制

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 11:09 次阅读

今天,我们就站在巨人的肩膀上,利用内核开发者已经写好的驱动来实现我们想要的功能。

应用层控制

除了可以在shell中通过echocat的方式控制Led,我们也可以在写一个应用层程序来操作/sys/class/leds/下的节点,应用层代码:

#include < stdio.h >
#include < stdlib.h >
#include < unistd.h >
#include < errno.h >
#include < fcntl.h >
#include < string.h >

#include < sys/stat.h >
#include < sys/types.h >

#define LED_DEV_PATH "/sys/class/leds/led%d/brightness"
#define ON
#define OFF

int fs4412_set_led(unsigned int lednum, unsigned int mode)
{
 int fd;
    int ret;
    char devpath[128];
    char *on = "1n";
    char *off = "0n";
    char *m = NULL;
    
    snprintf(devpath, sizeof(devpath), LED_DEV_PATH, lednum);
    fd = open(devpath, O_WRONLY);
    if (fd == -1) {
  perror("fsled- >open");
        return -1;
 }
    
    if (mode == ON)
         m = on;
    else
         m = off;
    
    ret = write(fd, m, strlen(m));
    if (ret == -1) {
  perror("fsled- >wrtie");
        close(fd);
        return -1;
    }
    
    close(fd);
    return 0;

}

int main(int argc, char *argv[])
{
 unsigned int lednum = 2;
    
    while(1){
  fs4412_set_led(lednum, on);
        usleep(500000);
        fs4412_set_led(lednum, OFF);
  usleep(500000);
        
        lednum++;
        if (lednum > 5)
             lednum = 2;
 }

 return 0;
}

上述应用层代码执行后,led2会闪烁。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23256

    浏览量

    660629
  • 驱动
    +关注

    关注

    12

    文章

    1839

    浏览量

    85270
  • Linux
    +关注

    关注

    87

    文章

    11296

    浏览量

    209364
  • 应用层
    +关注

    关注

    0

    文章

    46

    浏览量

    11501
收藏 人收藏

    评论

    相关推荐

    嵌入式Linux字符驱动LED灯设计

    要写一个应用层的测试程序,用来测试驱动程序。我的测试程序为myled_test.c,要求在shell下能够通过该测试程序来控制LED灯的亮灭。如:./myled_test on表示灯全
    发表于 02-03 14:28

    鸿蒙Hi3516 纯手工打造从应用层驱动示例

    在vendor\huawei\hdf\ 目录,新建驱动LED目录,vendor\huawei\hdf\LED ;新建LED.c文件
    发表于 11-06 09:56

    鸿蒙Hi3516dv 从应用层驱动GPIO 点亮LED

    再从寄存器级别重新写驱动,可以直接调用。2.在驱动文件 LED.c 添加gpio接口的头文件;不能在
    发表于 11-07 14:22

    【HiSpark AI Camera】鸿蒙Hi3516 纯手工打造从应用层驱动示例

    vendor\huawei\hdf\ 目录,新建驱动LED目录,vendor\huawei\hdf\LED ;新建LED.c文件
    发表于 11-07 15:41

    学习嵌入式Linux应用层的开发

    1 应用层驱动要想学习嵌入式Linux应用层的开发,首先要区分好应用层
    发表于 11-02 10:20

    如何在嵌入式linux应用层操作gpio口

    嵌入式linux文件io方式操作gpio口示例在嵌入式linux应用层操作gpio口,如果懒得写驱动或者懒得翻寄存器手册,有一种简单的方式
    发表于 12-16 06:19

    Linux驱动的相关资料下载

    // 再说明一下哈,你简历上写了你会驱动,面试官才问,你不写,一般不会问。1、UBOOT的作用2、驱动包括哪几种3、yaffs、jffs文件系统的不同4、应用层
    发表于 12-24 07:25

    【学习打卡】OpenHarmony的应用层说明

    应用程序进行通信。关于OSI(开放系统互连)网络模型标准,可以参考下图,OSI 网络模型是从硬件开始的较低级别到较高级别进行排列。需要注意的是应用层不是应用。相反,它其实是应用程序的一个组件,我们可以
    发表于 07-14 08:44

    Linux驱动到底能不能在应用层开发驱动

    驱动程序也要跟着重新编译,太麻烦了。因此,我建议同事把驱动写到APP里面。同事大惊,Linux能在应用层开发驱动
    的头像 发表于 12-29 10:34 6143次阅读

    linux spi应用层驱动以及回环测试代码

    linux spi应用层驱动以及回环测试代码
    发表于 10-22 15:47 2次下载

    嵌入式Linux应用层开发教程(一)基本概念

    1 应用层驱动要想学习嵌入式Linux应用层的开发,首先要区分好应用层
    发表于 11-01 17:59 14次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>应用层</b>开发教程(一)基本概念

    嵌入式Linux驱动 GPIO操作 包括驱动应用层程序对驱动进行测试

    文章目录代码驱动代码应用层代码 测试驱动Makefile这里记录的是嵌入式linux驱动对gp
    发表于 11-02 14:36 10次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>驱动</b> GPIO操作 包括<b class='flag-5'>驱动</b>和<b class='flag-5'>应用层</b>程序对<b class='flag-5'>驱动</b>进行测试

    Linux应用层操作寄存器

    应用层操作寄存器 驱动操作寄存器,需要先进行映射将物理地址转为虚拟地址。 但如果想在应用层操作寄存器,也是可以实现的。
    的头像 发表于 09-26 16:37 961次阅读

    Linux应用层操作寄存器

    --- > [*] /dev/mem virtual device support Linux应用层操作寄存器 除了直接使用devmem,我们也可以在Linux应用层自己实现一个de
    的头像 发表于 10-08 15:16 1213次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>应用层</b>操作寄存器

    Linux应用层控制外设的两种不同的方式

    众所周知,linux下一切皆文件,那么应用层如何控制硬件,同样是通过 文件I/O的方式来实现的,那么应用层
    的头像 发表于 10-05 19:03 468次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>应用层</b><b class='flag-5'>控制</b>外设的两种不同的方式