當前位置:
首頁 >
linux 标准 GPIO 操作
發布時間:2025/3/8
37
豆豆
生活随笔
收集整理的這篇文章主要介紹了
linux 标准 GPIO 操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux 提供了GPIO 操作的 API,具體初始化及注冊函數在 driver/gpio/lib_gpio.c 中實現。 #include??? int gpio_request(unsigned gpio, const char *label); 獲得并占有 GPIO port 的使用權,由參數 gpio 指定具體 port。非空的label指針有助于診斷。主要告訴內核這塊地址被占用了。當其他地方調用同一地址的gpio_request就會報告錯誤,該地址已經被申請。在/proc/mem有地址占用表描述。先申請在訪問的好處是避免資源競爭。 void gpio_free(unsigned gpio); 釋放 GPIO port 的使用權,由參數 gpio 指定具體 port。 int gpio_direction_input(unsigned gpio); 將 GPIO port(由參數 gpio 指定)設為輸入。 int gpio_direction_output(unsigned gpio, int value); 將 GPIO port(由參數 gpio 指定)設為輸出,并指定輸出電平值(value)。 int gpio_get_value(unsigned gpio); 獲得 GPIO port 上的電平值并返回。 void gpio_set_value(unsigned gpio, int value); 設置 GPIO port 上的電平。 int gpio_to_irq(unsigned gpio); 通過獲得 gpio port 對應的 irq number。 int gpio_cansleep(unsigned gpio) 這個主要區分是掛載在外部總線上的GPIO控制器,還是內部的GPIO控制器。因為外部總線上的GPIO控制器可以休眠,所以用這個來區分是否是擴展的GPIO,返回1是擴展的GPIO,0的話就是內部的GPIO。 int gpio_get_value_cansleep(unsigned gpio); void gpio_set_value_cansleep(unsigned gpio, int value); 這些都是對可以休眠擴展的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/下面創建和取消對應的gpio號 int gpio_export_link(struct device *dev, const char *name, unsigned gpio) //創建到導出GPIO的 sysfs link?,第一個參數是在哪個dev下創建,第二個是參數名字,第三個是gpio編號
總結
以上是生活随笔為你收集整理的linux 标准 GPIO 操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux-破解rhel7-root密码
- 下一篇: 马哥linux第六周作业