首先,看看系統中有沒有「/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操作的共同點在於都是對檔案描述...