以BPI-W2需要给 P11引脚输出0或1为例
1、根据GPIO引脚图确定GPIO的位置以及标识
2、写入GPIO号
向 /sys/class/gpio/export
写入此编号,比如P11号引脚对应GPIO17
,在 shell 中可以通过以下命令实现:
echo 17 > /sys/class/gpio/export
命令完成后会生成一个 /sys/class/gpio/gpio17
的目录,如果没有这个目录,说明这个引脚不能导出。
3、定义输入输出
direction文件定义输入还是输出,可以通过下面命令定义为输出
echo out > /sys/class/gpio/gpio17/direction
direction 能用的参数是:in、out、high、low
。其中 high / low
在设置方向为输出的同时,将 value
设置为相应的 1 / 0
。
4、输入高低电平
value 文件是端口的数值,为1或0,通过下面命令将 gpio17设置为底电平。
echo 0 > /sys/class/gpio/gpio17/value
5、控制40个引脚的流水灯脚本
#bin/bash
#GPIO40_NO_IGPIO="13 14 3 17 58 25 27 7 4 5 6 8 12 11 100 21 54 59 57 22 23 24 60"
#IGPIOSORG="21 3 2 5 4 9"
#IGPIO + 101 = GPIO
#IGPIOS="122 104 103 106 105 110"
GPIO40="13 14 122 104 103 3 17 58 25 27 106 105 7 4 110 5 6 8 12 11 100 21 54 59 57 22 23 24 60"
GPIOLED="128 97 98"
GPIOS="$GPIO40 $GPIOLED"
export_gpio() {
for IN in $GPIOS ; do
EXPORT=/sys/class/gpio/export
VALUE=/sys/class/gpio/gpio$IN/value
if [ ! -f $VALUE ] ; then
echo $IN > $EXPORT
fi
done
}
out_gpio() {
for IN in $GPIOS ; do
DIR=/sys/class/gpio/gpio$IN/direction
if [ -f $DIR ] ; then
echo out > $DIR
fi
done
}
hi_gpio() {
for IN in $GPIOS ; do
VALUE=/sys/class/gpio/gpio$IN/value
if [ -f $VALUE ] ; then
echo 1 > $VALUE
fi
done
}
on_off_led()
{
ONOFF=$1
for IN in $GPIOS ; do
VALUE=/sys/class/gpio/gpio$IN/value
if [ -f $VALUE ] ; then
echo $ONOFF > $VALUE
fi
done
}
export_gpio
out_gpio
hi_gpio
while [ 1 ] ; do
on_off_led 0
sleep .5
on_off_led 1
sleep .5
done