香蕉派的正确吃法之GPIO驱动点灯

分享一个简单控制GPIO的方法,如图

用/sys/class/gpio 可以访问 GPIO ,,具体如下:
用 PA 这个字母 A (或者 B, C, …)算出组号 (就是 0 - A, 1 - B, 2 - C, etc),乘以 32,然后加上后面的数字,就是 Linux 内核的 GPIO 编号。然后把这个编号 (假设为 8 (8 就是 PA8))输出到到/sys/class/gpio/export,然后就会出现一个 /sys/class/gpio/gpio8 目录,里面 direction 文件可以设置方向 in/out ,value 可以设置/读取值 0/1

比如BPI-M2Zero需要给 PA8 输出1,用来点灯
具体做法是
 1、首先计算此引脚编号。

   引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
   例如:想用PA8号脚,就是0X32+8=8

 2、向 /sys/class/gpio/export 写入此编号,比如12号引脚,在 shell 中可以通过以下命令实现:

   echo 8 > /sys/class/gpio/export

   命令完成后会生成一个 /sys/class/gpio/gpio8 的目录,如果没有这个目录,说明这个引脚不能导出。

 3、direction文件定义输入还是输出,可以通过下面命令定义为输出。
   echo out > /sys/class/gpio/gpio8/direction
   direction 能用的参数是:in、out、high、low。其中 high / low 在设置方向为输出的同时,将 value 设置为相应的 1 / 0。
 4、value 文件是端口的数值,为1或0,通过下面命令将 gpio8 设置为底电平。
   echo 0 > /sys/class/gpio/gpio8/value

另:python下如果想用bash可以用os.system(‘xxxx’)来调用,例:

import os
os.system('echo 8 > /sys/class/gpio/export')
os.system('echo out > /sys/class/gpio/gpio8/direction')
os.system('echo 0 > /sys/class/gpio/gpio8/value')

利害了我的球!!!!

我在M2 ZERO试了,可以,这个操作和直接操作/sys/class/leds相关的文件,是有什么区别?