Linux GPIO子系统API

24 篇文章 1 订阅
22 篇文章 4 订阅

Linux GPIO子系统API

static inline bool gpio_is_valid(int number)

该函数用来判断获取到的gpio号是否是有效的,只有有效的gpio号,才能向内核中进行申请使用,因此,当我们从设备树的设备节点获取到gpio号,可以使用该函数进行判断是否有效。

int gpio_request(unsigned gpio, const char *label)

该函数用于申请一个 GPIO管脚,在使用一个 GPIO之前一定要使用 gpio_request进行申请。
@gpio:要申请的 gpio标号,使用 of_get_named_gpio函数从设备树获取指定 GPIO属性信息,此函数会返回这个 GPIO的标号。
@label:给 gpio设置个名字。
@返回值: 0,申请成功;其他值,申请失败。

void gpio_free(unsigned gpio)

如果不使用某个 GPIO了,那么就可以调用 gpio_free函数进行释放。
@gpio:要释放的 gpio标号。

int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);

该函数用来申请单个GPIO,但是在申请的时候可以设置flag标志,例如,该函数在申请GPIO资源的同时,直接将GPIO的方向设置为输入或者输出。

int gpio_request_array(const struct gpio *array, size_t num);
void gpio_free_array(const struct gpio *array, size_t num);

这两个函数用来向系统中申请或者释放多个GPIO资源。

int devm_gpio_request(struct device *dev, unsigned gpio, const char *label);
int devm_gpio_request_one(struct device *dev, unsigned gpio, unsigned long flags, const char *label);
void devm_gpio_free(struct device *dev, unsigned int gpio);

这3个函数也是用来向系统申请或者释放GPIO资源,但是函数带有devm_前缀,也就是说,这是带设备资源管理版本的函数,因此在使用上面的函数时,需要指定设备的struct device指针。

int gpio_direction_input(unsigned gpio)

此函数用于设置某个 GPIO为输入。
@gpio:要设置为输入的 GPIO标号。
@返回值: 0,设置成功;负值,设置失败。

int gpio_direction_output(unsigned gpio, int value)

此函数用于设置某个 GPIO为输出,并且设置默认输出值。
@gpio:要设置为输出的 GPIO标号。
@value GPIO默认输出值。
@返回值: 0,设置成功;负值,设置失败。

int __gpio_get_value(unsigned gpio)

此函数用于获取某个 GPIO的值 (0或 1)

void __gpio_set_value(unsigned gpio, int value)

此函数用于设置某个 GPIO的值

int gpio_to_irq(unsigned int gpio)

此函数用于将当前已经申请GPIO号转换为IRQ号,也就是获取当前GPIO的中断线,函数调用成功后,将返回对应的IRQ号

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值