4.1.3 GPIO应用开发方法
来源:互联网 发布:网络教育到毕业多少钱 编辑:程序博客网 时间:2024/05/17 03:58
http://book.2cto.com/201304/20887.html
在Linux的应用层程序中,可以使用系统中的GPIOLIB模块在用户空间提供的sysfs接口,实现应用层对GPIO的独立控制。本节介绍的GPIO的这种操作方式是在Linux 2.6.35内核之后引入的一种GPIOLIB的管理机制,GPIOLIB提供了很好的用户接口封装,为用户提供了一个动态导出的接口。
在实验箱中运行的Linux系统的/sys/class/gpio目录下,共有5个文件,其中有3个文件为符号链接(gpiochip0、gpiochip5、gpiochip244),指向管理对应设备的目录。这3个符号链接分别对应实验箱中能够分别控制对应GPIO的3个管理芯片。上一节中涉及的GPIO都是从与gpiochip244对应的芯片中引出的。因此,本节主要讨论gpiochip244对应芯片的GPIO管理,但是此处介绍的操作方法同样也适用于gpiochip0和gpiochip5。
在/sys/class/gpio/gpiochip244目录下,共有3个文件和3个文件夹,主要作用见表4-2。
表4-2 gphichip244目录下文件的作用
对其中某个GPIO接口的控制主要需要进行如下包含3个步骤的操作:
(1) 导出GPIO接口
在/sys/class/gpio目录中有两个只具有写属性的文件:export和unexport。通过对这两个文件进行操作可以实现对GPIO接口的导出。
下面举例说明,为了对255号GPIO接口进行导出,可以在终端中通过下面的操作来完成:
cd /sys/class/gpio //进入相应的目录
echo 255 > export //将“255”(字符串类型)写入文件export
将“255”写入export文件后,系统会自动在/sys/class/gpio下创建gpio255目录。这说明对编号为255的GPIO接口导出成功。
(2) 设置GPIO属性
在gpio255目录下,系统会自动产生6个文件。其中,power、subsystem和uevent这3个文件的功能与表4-2中描述的功能相同。
其他的3个文件——value、direction和active_low都具有读写属性,用于完成对GPIO接口的控制。
value:具有读写属性,表示当前GPIO接口的电平状态。当GPIO的方向为输入时,可以通过value读出当前GPIO接口的电平状态高低(“1”/“0”,均以ASCII码表示);当GPIO方向为输出时,可以向该文件写入“1”/“0”,控制当前GPIO接口的高/低电平。
direction:具有读写属性,控制GPIO接口的输入输出方向。如果将“out”写入该文件,该GPIO接口为输出状态;如果将“in”写入该文件,该GPIO接口为输入状态;如果将“high”写入该文件,那么在将GPIO接口置为输出状态的同时,也将value的值置为“1”;如果将“low”写入value文件,那么在将GPIO接口置为输出状态的同时,将“0”写入value文件。通过对direction文件的读操作还可以判断当前GPIO接口的输入/输出状态(“in”/“out”)。
active_low:具有读写属性,值为“0”或“1”,用于决定value中的值是否进行翻转。当值为“0”时,value中的“0”表示低电平,“1”表示高电平;当值为“1”时,value中的“1”表示低电平,“0”表示高电平。
(3) GPIO接口导出的取消
将取消导出的GPIO编号写入文件unexport中,对应的GPIO接口将会被取消导出。相对的,在文件系统中创建的目录也会消失。
例如,取消255号GPIO接口的导出:
echo 255 > unexport //将“255”(字符串类型)写入文件unexport
- 4.1.3 GPIO应用开发方法
- 应用层配置GPIO方法
- 嵌入式Linux基于Qt开发GPIO应用
- 嵌入试linux应用开发完全手册-GPIO-mini2440(micro2440)
- STM32F412应用开发笔记之二:基本GPIO控制
- 嵌入式Linux应用开发完全手册(二)GPIO
- STM32+GPIO应用笔记
- STM32 GPIO应用笔记
- STM32 GPIO应用
- 树莓派---GPIO应用详解
- ZYNQ GPIO应用
- rk3128 gpio开发
- S5PV210开发 -- GPIO
- NRF52832开发:GPIO驱动
- 2440 GPIO 控制方法
- CE6 操作GPIO方法
- CE6 操作GPIO方法
- Linux无需开发底层驱动,从应用层获取GPIO中断
- hibernate运行机制
- IOS多线程读写Sqlite问题解决
- 【Python】python学习之路(针对没有任何编程经验者或懂一点shell者)
- ZStack-CC2530-2.5.1a主要代码分析总结——明白ZStack-OSAL的原理和思想
- HPUOJ1291 小朋友排队 【逆序数+树状数组】
- 4.1.3 GPIO应用开发方法
- 应用于负载均衡的一致性哈希及java实现
- 查询BLOB字段的长度
- 通过syslog接收远程日志
- 编程错误实例的剖析[3]Map的keySet遍历
- 黑马程序员java基础之IO流中的字节流
- Google Maps API Key申请办法(最新)
- iOS--HTTP 简单了解
- 调用sql,并将结果集以table形式展示在浏览器中