Linux 用户态设置GPIO控制
linux内核提供了一套在用户态配置GPIO的接口,在/sys/class/gpio/
目录下
可以发现其中包含有两个文件export
、unexport
和若干gpiochipN
类型文件夹
export
用于将指定编号的引脚导出,作为GPIO使用unexport
用于将导出的GPIO删除掉gpiochipN
当前芯片中包含的GPIO控制器
GPIO使用方法
- 添加设备接口GPIO167
输入:echo 167 > export
可以发现,目录下出现了gpio167
,如果执行命令后没有反应,表示当前的GPIO已经用作其他的功能,例如作为IIC的引脚等 - 删除设备接口GPIO167
输入:echo 167 > unexport
可以发现当前导出的接口被删除 控制设备接口GPIO167
输入:echo 167 > unexport
direction
设置输出还是输入模式
- 设置为输入:echo “in” > direction
- 设置为输出:echo “out” > direction
value
输出时,控制高低电平;输入时,获取高低电平
- 高电平:echo 1 > value
- 低电平:echo 0 > value
edge
控制中断触发模式,引脚被配置为中断后可以使用poll()
函数监听引脚
- 非中断引脚: echo “none” > edge
- 上升沿触发:echo “rising” > edge
- 下降沿触发:echo “falling” > edge
- 边沿触发:echo “both” > edge
gpiochipN目录
用来管理和控制一组gpio端口的控制器
base
和N相同,表示控制器管理的最小的端口编号。lable
诊断使用的标志(并不总是唯一的)ngpio
控制器管理的gpio端口数量(端口范围是:N ~ N+ngpio-1)参考:http://blog.youkuaiyun.com/mirkerson/article/details/8464290