Linux中的GPIO的使用方法

http://lengnuanyangguang.blog.163.com/blog/static/55676445201242531319525/

应该是新版本内核才有的方法。 请参考:./Documentation/gpio.txt文件

提供的API 驱动需要包含 #include <linux/gpio.h>

在驱动中使用延时函数mdelay,需要包含<linux/delay.h>文件。   1;判断一个IO是否合法:

int gpio_is_valid(int number);

2;设置GPIO的方向,如果是输出 要同时设置其电平: /* set as input or output, returning 0 or negative errno */         int gpio_direction_input(unsigned gpio);         int gpio_direction_output(unsigned gpio, int value);

3;获取输入引脚的电平: /* GPIO INPUT: return zero or nonzero */         int gpio_get_value(unsigned gpio);

   /* GPIO OUTPUT */         void gpio_set_value(unsigned gpio, int value);

int gpio_cansleep(unsigned gpio);

/*To access such GPIOs, a different set of accessors is defined:*/

   /* GPIO INPUT: return zero or nonzero, might sleep */         int gpio_get_value_cansleep(unsigned gpio);

   /* GPIO OUTPUT, might sleep */         void gpio_set_value_cansleep(unsigned gpio, int value);

4获取一个GPIO并声明标签: /* request GPIO, returning 0 or negative errno.     * non-null labels may be useful for diagnostics.    */         int gpio_request(unsigned gpio, const char *label);

    /* release previously-claimed GPIO */         void gpio_free(unsigned gpio);

5;将GPIO映射为IRQ中断: /* map GPIO numbers to IRQ numbers */         int gpio_to_irq(unsigned gpio);

   /* map IRQ numbers to GPIO numbers (avoid using this) */         int irq_to_gpio(unsigned irq);

6;设置GPIO IRQ中断类型:

if (!sw->both_edges) {   if (gpio_get_value(sw->gpio))

       set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_FALLING);   else

   set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值