linux 标准 GPIO 操作
生活随笔
收集整理的這篇文章主要介紹了
linux 标准 GPIO 操作
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Linux 提供了GPIO 操作的 API,具體初始化及注冊(cè)函數(shù)在 driver/gpio/lib_gpio.c 中實(shí)現(xiàn)。 #include??? int gpio_request(unsigned gpio, const char *label); 獲得并占有 GPIO port 的使用權(quán),由參數(shù) gpio 指定具體 port。非空的label指針有助于診斷。主要告訴內(nèi)核這塊地址被占用了。當(dāng)其他地方調(diào)用同一地址的gpio_request就會(huì)報(bào)告錯(cuò)誤,該地址已經(jīng)被申請(qǐng)。在/proc/mem有地址占用表描述。先申請(qǐng)?jiān)谠L問(wèn)的好處是避免資源競(jìng)爭(zhēng)。 void gpio_free(unsigned gpio); 釋放 GPIO port 的使用權(quán),由參數(shù) gpio 指定具體 port。 int gpio_direction_input(unsigned gpio); 將 GPIO port(由參數(shù) gpio 指定)設(shè)為輸入。 int gpio_direction_output(unsigned gpio, int value); 將 GPIO port(由參數(shù) gpio 指定)設(shè)為輸出,并指定輸出電平值(value)。 int gpio_get_value(unsigned gpio); 獲得 GPIO port 上的電平值并返回。 void gpio_set_value(unsigned gpio, int value); 設(shè)置 GPIO port 上的電平。 int gpio_to_irq(unsigned gpio); 通過(guò)獲得 gpio port 對(duì)應(yīng)的 irq number。 int gpio_cansleep(unsigned gpio) 這個(gè)主要區(qū)分是掛載在外部總線上的GPIO控制器,還是內(nèi)部的GPIO控制器。因?yàn)橥獠靠偩€上的GPIO控制器可以休眠,所以用這個(gè)來(lái)區(qū)分是否是擴(kuò)展的GPIO,返回1是擴(kuò)展的GPIO,0的話就是內(nèi)部的GPIO。 int gpio_get_value_cansleep(unsigned gpio); void gpio_set_value_cansleep(unsigned gpio, int value); 這些都是對(duì)可以休眠擴(kuò)展的gpio的操作 static inline int gpio_is_valid(int number)?判斷GPIO是否有效,有效返回0 int gpio_export(unsigned gpio, booldirection_may_change); void gpio_unexport(); //在 /sys/class/gpio/下面創(chuàng)建和取消對(duì)應(yīng)的gpio號(hào) int gpio_export_link(struct device *dev, const char *name, unsigned gpio) //創(chuàng)建到導(dǎo)出GPIO的 sysfs link?,第一個(gè)參數(shù)是在哪個(gè)dev下創(chuàng)建,第二個(gè)是參數(shù)名字,第三個(gè)是gpio編號(hào)
總結(jié)
以上是生活随笔為你收集整理的linux 标准 GPIO 操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux-破解rhel7-root密码
- 下一篇: A successful Git bra