Linux 操作GPIO-A311D-Ubuntu

Linux操作GPIO,这里使用的是A311D这个芯片的,操作系统是Ubuntu,其他的也可以参考,注意:参考该文,需要先看控制输出再看控制输入部分,因为查看GPIO序号操作只在控制输出有说明

控制GPIO输出

  

  其中,export和unexport为GPIO子系统的属性文件,其余文件则为符号链接,分别指向各自对应的GPIO组。

  当我们操作某个GPIO之前,需要先向export文件写入该GPIO编号以导出它的设备目录。

  文件系统中/sys/class/gpio/unexport文件 用于通知系统取消GPIO编号导出。

  direction设置GPIO输出方向,可接收的参数:in,out,high,low;其中high,low设置方向为输出并将value值设置为相应的1/0。

  当gpio配置为输出模式时,可以通过 echo 设置value值设置gpio的高低电平。

  查看GPIO值:cat /sys/class/gpio/gpio195(你查看哪个GPIO就写哪个编号)/value 。

控制GPIO输入

  1 #!/bin/sh
  2
  3 echo 481 > /sys/class/gpio/export  //执行这句才能生成gpio481文件夹
  4 if [ -d /sys/class/gpio/gpio481 ]  //判断GPIO文件是否存在
  5 then
  6     echo in > /sys/class/gpio/gpio481/direction  //把GPIO设为输入
  7     while(true)  //while循环读取GPIO的值
  8     do
  9         gpioValue=`cat /sys/class/gpio/gpio481/value`  //读取GPIO值,注意``为反引号
 10         sleep 1
 11
 12         if [ "$gpioValue" -eq 0 ] //判断GPIO读取的值是否为0
 13         then
 14             sleep 3 //延时3S,消抖
 15
 16             if [ "$gpioValue" -eq 0 ]    //再次判断读到的GPIO值
 17             then
 18                  echo 'Rest Star'        //输出提示信息
 19                  reboot                  //重启系统
 20             fi
 21         fi
 22     done
 23 else
 24     echo 'RestButton not find'
 25 fi
    

 

posted @ 2021-08-03 11:10  白菜没我白  阅读(992)  评论(0编辑  收藏  举报