1.看看系統中有沒有“/sys/class/gpio”這個文件夾。
如果沒有請在編譯內核的時候加入。
$ make menuconfig
Device Drivers —> GPIO Support —> /sys/class/gpio/… (sysfs interface)。
$ make
重新燒寫即可。
2.啓動開發板,在終端中敲入以下命令,獲取GPIO的信息。
# cd /sys/class/gpio
# for i in gpiochip* ; do echo `cat $i/label`: `cat $i/base` ; done
終端顯示如下(部分):
GPA0: 0
GPG1: 104
GPG2: 112
GPG3: 120
GPH0: 128
GPH1: 137
GPB: 14
GPH2: 146
GPH3: 155
GPI: 164
3.計算GPIO的引腳編號。
我們用GPH2_0來控制IO口。
GPH2的起始編號是146,那麼GPH2_0 就是146+0 = 146。
# echo "146" > /sys/class/gpio/export
# echo "out" > /sys/class/gpio/gpio146/direction
# echo "1" > /sys/class/gpio/gpio146/value
# echo "0" > /sys/class/gpio/gpio146/value
讀取value的數值:
# cat /sys/class/gpio/gpio146/value
以此類推,GPH2_1就是146 + 1 = 147。
# echo "147" > /sys/class/gpio/export
# echo "out" > /sys/class/gpio/gpio147/direction
# echo "1" > /sys/class/gpio/gpio147/value
# echo "0" > /sys/class/gpio/gpio147/value
到這裏就可以聽到連接IO口的繼電器的開啓關閉的聲音了,也就完成了簡單的IO口操作。
參考:http://blog.163.com/shaohj_1999@126/blog/static/634068512013511104341878/
爲了加深理解,感謝該作者的分享,同時也把該作者的/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目錄,如果沒有出現相應的目錄,說明此引腳不可導出:
echo 12 > /sys/class/gpio/export
* direction文件,定義輸入輸入方向,可以通過下面命令定義爲輸出
echo "out " >direction
* direction接受的參數:in, out, high, low。high/low同時設置方向爲輸出,並將value設置爲相應的1/0。
* value文件是端口的數值,爲1或0.
echo 1 > value