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)