linux使用gpio开一个线程,LINUX的gpio_request_one作用
一直習慣使用gpio_request來申請一個GPIO,然后用gpio_direction_input、gpio_direction_output等函數來配置對應的GPIO,用gpio_free來釋放申請。后來看到別人也會用gpio_request_one來申請和配置一個GPIO,然后就去看看看這個接口的實現,發現這個函數就是對一個GPIO的申請和配置的組合而已。但是看到這個函數最終還會釋放GPIO,就有點不解了。剛配置好怎么就釋放了呢?那配置還怎么生效?
今天早上騎自行車從某條路經過,人行道上有個妹子,而我只是不經意瞥了一眼。艾瑪,差點把我從自行車上震下來。穿裙子的妹子整個屁屁都走光了
。。。渾圓的兩瓣沐浴在清晨的陽光下,伴隨著高跟鞋的節奏從我眼前飄過。那一刻,時間仿佛停止,空氣仿佛凝固。。。。。突然,我的腦子里出現了一個關鍵字: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);
總結
以上是生活随笔為你收集整理的linux使用gpio开一个线程,LINUX的gpio_request_one作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux gpt引导分区,linux
- 下一篇: linux操作系统2试题,RedHat