工程中linux的LED驱动方法

本文介绍如何利用Linux内核提供的通用GPIO LED驱动,在mini2440开发板上配置并控制LED灯。通过简单的BSP文件设置,即可实现LED灯的亮灭操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在前面的blog中使用了标准的linux下驱动设备的方法,那是从头到尾自己驱动,但是工程中我们不会那么干(除非是芯片厂商),因为linux下已经有非常完整的LED(dirvers/leds/leds-gpio.c),LCD,按键等设备的驱动都是跨平台的,我们只需要在BSP中添加一些基本信息就可以啦。下面以mini2440上开发板上驱动led为例来加以说明

     1.在mini2440.c(这是我的bsp文件)中添加

   #include<linux/leds.h>

static struct gpio_led mini2440_leds[] = {
    [0] = {
        .name = "LED1",
        .gpio = S3C2410_GPB5,
    },
    [1] = {
        .name = "LED2",
        .gpio = S3C2410_GPB6,
    },
    [2] = {
        .name = "LED3",
        .gpio = S3C2410_GPB7,
    },
    [3] = {
        .name = "LED4",
        .gpio = S3C2410_GPB8,
    },
};

static struct gpio_led_platform_data mini2440_gpio_led_pdata = {
    .num_leds = ARRAY_SIZE(mini2440_leds),
    .leds = mini2440_leds,
};

static struct platform_device mini2440_device_led = {
    .name       = "leds-gpio",
    .id     = -1,
    .dev        = {
        .platform_data = &mini2440_gpio_led_pdata,
    },
};


 

static struct platform_device *mini2440_devices[] __initdata = {
	&s3c_device_usb,
	&s3c_device_lcd,
	&s3c_device_wdt,
	&s3c_device_i2c0,
	&s3c_device_iis,
	&s3c_device_nand,
	&mini2440_device_dm9k,
	&s3c_device_rtc,
	&mini2440_device_led,  //在设备集中添加led设备
};


  现在我们可以进入:

cd /sys/devices/platform/leds/

可以看到下面有LED1,LED2,LED3,LED4

我们可以通过执行

echo 0 /sys/devices/platform/leds/LED1/birighness 

来点亮led1

echo 1 /sys/devices/platform/leds/LED1/birighness  //熄灭

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值