Linux GPIO口的控制(树莓派4B实现)(文件方式)
手中有个树莓派4B,闲的无聊,想操作一下他的GPIO口。我装的系统是Ubuntu 19.10 IoT版,系统的安装方式就不赘述了,可以在官网上查查,有详细说明。当然也可以在《树莓派实验室》这个网站找找,也感谢这个网站为我提供了树莓派的原理图下载(树莓派实验室)言归正传Linux的GPIO文件方式操作,首先要找到这个文件在的位置,其路径在:/sys/class/gpio/。在这个文件夹下至少有两个文
·
手中有个树莓派4B,闲的无聊,想操作一下他的GPIO口。
我装的系统是Ubuntu 19.10 IoT版,系统的安装方式就不赘述了,可以在官网上查查,有详细说明。当然也可以在《树莓派实验室》这个网站找找,也感谢这个网站为我提供了树莓派的原理图下载(树莓派实验室)
言归正传
Linux的GPIO文件方式操作,首先要找到这个文件在的位置,其路径在:/sys/class/gpio/
在这个文件夹下至少有两个文件 export和unexport,分别记录要操作的GPIO口的值和取消操作的值。
接下来就要看原理图来确定你想操作的GPIO口了,如下图:
比如我们选择GPIO14,那我们就可以先将14口加入到export文件:
echo 14 > /sys/class/gpio/export
然后注意文件夹中就多了一个gpio14这个文件,然后设置这个IO口的方向,比如设置为输出:
echo out > /sys/class/gpio/gpio14/direction
再接下来就是设置他的高低电平了,比如设置高电平:
echo 1 > /sys/class/gpio/gpio14/value
假如你现在用完了,可以退出对这个IO口的使用:
echo 14 >/sys/class/gpio/unexport
可以用代码简单实现用一下:
C语言版本:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int nValue = 0;
int nCnt = 10000;
char chData[256]={0};
system("echo 14 > /sys/class/gpio/export");
system("echo out > /sys/class/gpio/gpio14/direction");
do
{
nValue=nValue%2;
sleep(1);
sprintf(chData,"echo %d > /sys/class/gpio/gpio14/value",nValue);
system(chData);
nValue++;
nCnt--;
}while(nCnt);
system("echo 14 > /sys/class/gpio/unexport");
return 0;
}
python版本:
import os
import time
os.system("echo 14 > /sys/class/gpio/export")
os.system("echo out >/sys/class/gpio/gpio14/direction")
nCnt = 1000
while(nCnt):
time.sleep(1)
os.system("echo 1 >/sys/class/gpio/gpio14/value")
time.sleep(1)
os.system("echo 0 >/sys/class/gpio/gpio14/value")
print(nCnt)
nCnt=nCnt-1
os.system("echo 14 > /sys/class/gpio/unexport")
更多推荐
已为社区贡献1条内容
所有评论(0)