RPi - 使用">"运算符访问GPIO引脚

4

如网站上所示: https://luketopia.net/2013/07/28/raspberry-pi-gpio-via-the-shell/

如果我们想要访问引脚4,我们需要键入 echo 4 > /sys/class/gpio/export

以及

为了指定我们想要将引脚用作输出,我们可以执行 echo out > /sys/class/gpio/gpio4/direction

我是一个 bash 初学者,我想通过终端访问 RPi 的 GPIO 引脚。 我在谷歌上搜索以找出“>”运算符的确切作用,但我发现所有的结果都是字符串比较(我认为返回1或0)。 它到底是如何使我们能够触达引脚的?

1个回答

4

在我看来,这个问题有两个方面:

  1. 重定向运算符本身的工作原理,以及...
  2. GPIO驱动程序如何通过RPi Linux工作

我将分别回答以下问题:

1. 重定向运算符 >

>是所谓的“重定向运算符”。它接收进程或函数的输出,并将其从终端重定向到其他位置。 echo命令将输出写入终端。在这种特定情况下,echo 4的终端输出(即值4)被传递到/sys/class/gpio/export。有关实际操作的更多详细信息,请参见第2节。

>的另一个常见用法是将输出重定向到文件中,例如:

$ echo "This text will go into a file." > "myfile.txt"

文件myfile.txt将被创建,并且我们输出的行将被放入其中,因此其内容将为“This text will go into a file.”。
不仅仅是echo命令,任何命令的控制台输出都可以被重定向,例如:
$ ls -la > "directoryListing.txt"

上面的命令会列出所有文件并将结果输出到名为“directoryListing.txt”的文本文件中,而不是控制台。
有关Linux概念的更多详细信息,尤其是有用的重定向>和管道|等,请尝试下面的链接:

https://unix.stackexchange.com/questions/159513/what-are-the-shells-control-and-redirection-operators

2. GPIO驱动器访问

从阅读此RPi Linux网站的描述来看,/sys/class/gpio/export似乎利用了GPIO引脚的设备驱动程序,并告诉它您希望使用提供的引脚(在本例中为引脚4)。您可以通过从控制台重定向输入到该虚拟目录来提供输入信息(请参见上面的第1节)。

一旦调用了export,就告诉了驱动程序要使用哪个引脚(或引脚),并创建了类似于虚拟文件系统的东西以允许控制。

这就是gpio4/direction部分的作用。当您导出pin 4时,将创建那个gpio4文件夹。在该目录中有许多(您可以视为)虚拟文件,然后可以设置引脚配置。其中的direction告诉驱动程序引脚是输入引脚(在这种情况下,传递单词in),还是输出引脚(在这种情况下,我们传递单词out)。

同样地,我们使用控制台重定向运算符>来设置它,然后可以像普通文件一样读取它,以获取分配的值,如下所示:

$ cat /sys/class/gpio/gpio4/direction

要读取/写入引脚的值(即它是否设置为打开或关闭),只需按照相同的思路操作value文件即可:
$ echo 1 > /sys/class/gpio/gpio4/value

将引脚4的值设置为1,表示开启。同样地,可以通过执行以下操作关闭它:

$ echo 0 > /sys/class/gpio/gpio4/value

最后,如果您已将引脚方向指定为输入,则可以执行以下操作:
$ echo in > /sys/class/gpio/gpio4/direction

您可以这样读取该值:
$ cat /sys/class/gpio/gpio4/value

如果您想将其存储在变量中,可以执行以下操作:
$ myPinValue=$(cat /sys/class/gpio/gpio4/value)

请注意,这些示例未经测试,而且我的 Linux 技能有些生疏,因为我现在很遗憾地在 Windows 环境中工作。

1
很好的回答,但我注意到了一个小错误。在给变量赋值时,变量前面不能有'$'符号,即: myPinValue = $(cat /sys/class/gpio/gpio4/value) - I A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接