Linux操作GPIO(檔案IO方式)

2021-09-29 03:27:34 字數 2094 閱讀 5681

首先,看看系統中有沒有「/sys/class/gpio」這個資料夾。如果沒有請在編譯核心的時候加入 

device drivers-> gpio support ->/sys/class/gpio/… (sysfs inte***ce)
/sys/class/gpio 的使用說明:

gpio_operation 通過/sys/檔案介面操作io埠 gpio到檔案系統的對映

◇  控制gpio的目錄位於/sys/class/gpio

◇  /sys/class/gpio/export檔案用於通知系統需要匯出控制的gpio引腳編號

◇  /sys/class/gpio/unexport 用於通知系統取消匯出

◇  /sys/class/gpio/gpiochipx目錄儲存系統中gpio暫存器的資訊,包括每個暫存器控制引腳的起始編號base,暫存器名稱,引腳總數 匯出乙個引腳的操作步驟

◇  首先計算此引腳編號,引腳編號 = 控制引腳的暫存器基數 + 控制引腳暫存器位數

◇  向/sys/class/gpio/export寫入此編號,比如12號引腳,在shell中可以通過以下命令實現,命令成功後生成/sys/class/gpio/gpio12目錄,如果沒有出現相應的目錄,說明此引腳不可匯出

◇  direction檔案,定義輸入輸入方向,可以通過下面命令定義為輸出。direction接受的引數:in, out, high, low。high/low同時設定方向為輸出,並將value設定為相應的1/0

◇  value檔案是埠的數值,為1或0

進入gpio資料夾,後面自動會加上符號「#」,如下圖:

以下幾個例子:

1. 匯出

/sys/class/gpio# echo 44 > export
2. 設定方向

/sys/class/gpio/gpio44# echo out > direction
3. 檢視方向

/sys/class/gpio/gpio44# echo 1 > value
4. 設定輸出

/sys/class/gpio/gpio44# echo 1 > value
5. 檢視輸出值

/sys/class/gpio/gpio44# cat value
6. 取消匯出

/sys/class/gpio# echo 44 > unexport
一、 以echo的形式呼叫system函式進行操作,這種形式程式設計比較簡單,結構比較清晰,如下:

void set_gpio64_low(void)  

二、 通過檔案的形式來呼叫

#include #include #include #include #include //define o_wronly and o_rdonly

void initgpio(int n)

//create gpio file

void setgpiodirection(int n,char *direction)

;    sprintf(path,"/sys/class/gpio/gpio%d/direction",n);

file * fp =fdopen(path,"w");

if (fp == null)

perror("direction open filed");

else

fprintf(fp,"%s",direction);

fclose(fp);

}   //set gpio "in" or "out"

int getgpiovalue(int n)

if (read(fd, value_str, 3) < 0)

close(fd);

return (atoi(value_str));

}   //get gpio(n)'s value

int main()

return 0;

}

檔案IO方式操作GPIO

0 前言 本文描述如果通過檔案io sysfs方式控制easyarm gpio埠。通過sysfs方式控制gpio,先訪問 sys class gpio目錄,向export檔案寫入gpio編號,使得該gpio的操作介面從核心空間暴露到使用者空間,gpio的操作介面包括direction和value等,...

Linux檔案I O操作

可以呼叫l s e e k顯式地定位乙個開啟檔案。include include off t lseek int filesdes,off t offset,int whence 返回 若成功為新的檔案位移,若出錯為 1。對引數offset 的解釋與引數w h e n c e 的值有關。若whenc...

linux檔案IO操作

說起linux程式設計來,甚至包括其他系統的程式設計,很大一部分都是處理io操作了 另乙個重要的部分是程序process 特別是在linux系統上,由於一切都是檔案 fd 的思想,更是擴大了檔案io的範疇。比如磁碟上檔案的io,網路io,終端io,管道io等等。這些io操作的共同點在於都是對檔案描述...