ARM驱动学习之22 字符类GPIO

                              ARM驱动学习之22 字符类GPIO


1.将“21_字符驱动”中的文件“char_driver.c”改为“CharDriverLeds.c”
Makefile也做修改
2.头文件
#include "CharDriverLeds.h"

#include <linux/gpio.h>
#include <plat/gpio-cfg.h>
#include <mach/gpio-exynos4.h>

3.c文件中定义结构体数组
static int led_gpios[] = {
       EXYNOS4_GPL2(0),EXYNOS4_GPK1(1),
};

#define LED_NUM ARRAY_SIZE(led_gpios)

4.chardevnode_ioctl操作:
switch(cmd)
{
    case 0:
    case 1:
        if (arg > LED_NUM){
            return -EINVAL;

        }
        gpio_set_value(led_gpios[arg],cmd);
        break;

    default:
    return -EINVAL;

}

5.GPIO_INIT:
static int gpio_init(void)
{
    int i = 0,ret = 0;
    for(i = 0;i < LED_NUM;i ++){
        ret = gpio_request(led_gpios[i],"LED");
        if(ret){
            printf("%s,GPIO failed");
        }
        else{
            s3c_gpio_cfgpin(led_gpios[i],S3C_GPIO_OUTPUT);
            gpio_set_value(led_gpios[i],1);
        }

    }
    return 0;

}

6.释放GPIO
for(i = 0;i < LED_NUM;i ++)
{
    gpio_free(led_gpios[i]);
}
7.应用文件invoke_char_gpios.c修改传参改变led状态
ioctl(fd,atoi(argv[1]),atoi(argv[2]));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值