linux使用gpio开一个线程,LINUX的gpio_request_one作用

一直习惯使用gpio_request来申请一个GPIO,然后用gpio_direction_input、gpio_direction_output等函数来配置对应的GPIO,用gpio_free来释放申请。后来看到别人也会用gpio_request_one来申请和配置一个GPIO,然后就去看看看这个接口的实现,发现这个函数就是对一个GPIO的申请和配置的组合而已。但是看到这个函数最终还会释放GPIO,就有点不解了。刚配置好怎么就释放了呢?那配置还怎么生效?

今天早上骑自行车从某条路经过,人行道上有个妹子,而我只是不经意瞥了一眼。艾玛,差点把我从自行车上震下来。穿裙子的妹子整个屁屁都走光了

a4c26d1e5885305701be709a3d33442f.png。。。浑圆的两瓣沐浴在清晨的阳光下,伴随着高跟鞋的节奏从我眼前飘过。那一刻,时间仿佛停止,空气仿佛凝固。。。。。突然,我的脑子里出现了一个关键字:gpio_request_one

!!!

遥远的天边传来一个空洞却深邃的声音:。。。。这个函数的功能就是申请并配置GPIO一次,然后别人想复用用的时候还能重新申请。而为什么要释放的原因有两点:1.

释放了,别人才能复用啊!2.

释放一个GPIO并不会导致先前对这个GPIO的配置失效。也就是你先前配置为输出拉高,当你释放后它还是输出拉高的,除非别人重新申请并重新配置这个GPIO后,该GPIO的状态才会改变!。。。。。

当这个闪光结束后我回到现实一看,雪白的两瓣已经离我远去,只留下红色的背影映衬着若隐若现的一点白或者两点白。。。。。

我想,是否该追上妹子提醒一下:Hi,姐姐(这是个三十岁以上的妹子),你把裙子夹进内裤了!

* gpio_request_one -

request a single GPIO with initial configuration

* @gpio: the GPIO

number

* @flags: GPIO

configuration as specified by GPIOF_*

* @label: a literal

description string of this GPIO

int gpio_request_one(unsigned gpio, unsigned

long flags, const char *label)

{

struct gpio_desc *desc;

int err;

desc = gpio_to_desc(gpio);

err = gpiod_request(desc, label);

if (err)

return err;

if (flags & GPIOF_OPEN_DRAIN)

set_bit(FLAG_OPEN_DRAIN,

&desc->flags);

if (flags & GPIOF_OPEN_SOURCE)

set_bit(FLAG_OPEN_SOURCE,

&desc->flags);

if (flags & GPIOF_DIR_IN)

err = gpiod_direction_input(desc);

else

err = gpiod_direction_output(desc,

(flags & GPIOF_INIT_HIGH) ? 1 :

0);

if (err)

goto free_gpio;

if (flags & GPIOF_EXPORT) {

err = gpiod_export(desc, flags &

GPIOF_EXPORT_CHANGEABLE);

if (err)

goto free_gpio;

}

return 0;

free_gpio:

gpiod_free(desc);

return err;

}

EXPORT_SYMBOL_GPL(gpio_request_one);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值