<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    linux 標準 GPIO 操作

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 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編號RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全