參考:
https://blog.csdn.net/kris_fei/article/details/69553422
https://blog.csdn.net/qwq1503/article/details/89321291
-
查詢GPIO信息
# 目錄跳轉
cd /sys/kernel/debug
# 查詢信息
cat gpio
查詢結果如下
可以看到gpio1是以nubmer爲32開始, 那麼GPIO1_A1就是 32 + 1 = 33
-
導入GPIO1_A1
echo 33 > /sys/class/gpio/export
-
導出GPIO1_A1
echo 33 > /sys/class/gpio/unexport
-
定義GPIO1_A1輸入輸出方向
# direction接受的參數:in, out, high, low。high/low同時設置方向爲輸出,並將value設置爲相應的1/0。
echo out > /sys/class/gpio/gpio33/direction
-
定義GPIO1_A1 Value值
echo 1 >/sys/class/gpio/gpio33/value
下面是C語言編寫的GPIO控制例程,實現LED的每隔一秒閃爍一次。
示例1:
// 參考:https://blog.csdn.net/qwq1503/article/details/89321291
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main( void )
{
FILE *p = NULL;
int i = 0;
p = fopen( "/sys/class/gpio/export", "w" );
fprintf( p, "%d", 38 );
fclose( p );
p = fopen( "/sys/class/gpio/gpio38/direction", "w" );
fprintf( p, "out" );
fclose( p );
for ( i = 0; i < 100; i++ )
{
p = fopen( "/sys/class/gpio/gpio38/value", "w" );
fprintf( p, "%d", 1 );
sleep( 1 );
fclose( p );
p = fopen( "/sys/class/gpio/gpio38/value", "w" );
fprintf( p, "%d", 0 );
sleep( 1 );
fclose( p );
}
p = fopen( "/sys/class/gpio/unexport", "w" );
fprintf( p, "%d", 38 );
fclose( p );
return(0);
}
示例2:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main( void )
{
FILE *p = NULL;
int i = 0;
for ( i = 0; i < 100; i++ )
{
p = fopen( "/proc/rp_gpio/gpio0", "w" );
fprintf( p, "%d", 1 );
sleep( 1 );
fclose( p );
p = fopen( "/proc/rp_gpio/gpio0", "w" );
fprintf( p, "%d", 0 );
sleep( 1 );
fclose( p );
}
return(0);
}