嵌入式 Linux 如何操作 GPIO ?
链接:https://www.zhihu.com/question/19704852/answer/19760467
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果是在已经适配好的linux内核上,那么相信已经有了完成的gpiochip,可以在用户空间/sys/class/gpio目录下看到,如:
export
gpiochip0/
gpiochip32/
gpiochip64/
gpiochip96/
unexport
然后对照手册看下需要用到哪个GPIO,举个例子:
如果使想用GPIO1_20
那么GPIO Number就是 1 x 32 + 20 = 54
使用分两种情况:
1. 用户空间:
echo 54 > export
这样在这个/sys/class/gpio目录下就会产生gpio54文件夹
在文件夹下需要用到的有两个文件:
direction 用来配置输入(in)还是输出(out)
value 如果这个GPIO配置成了输入,那么通过cat value可以查看当前这个GPIO是什么电位;如果配置成了输出,那么可以通过echo 1/0 > value给这个GPIO口指定输出电平。
2. 内核空间(驱动):
#include <linux/gpio.h>
gpio_request_one(54, GPIOF_INIT_HIGH, "gpio1_20")
这里是配置成输出,默认高电平,别名(label)为gpio1_20——就是给你的IO口取个名字。
gpio_request_one(54, GPIOF_IN, "gpio1_20")
这个就是配置成输入。
使用完后别忘了free
gpio_free(54);
具体GPIO接口详见:Linux/Documentation/gpio.txt
嵌入式 Linux 如何操作 GPIO ?的更多相关文章
- [转载]嵌入式linux下操作GPIO
本文转自:http://blog.csdn.net/mirkerson/article/details/8464231 在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网 ...
- Linux 下操作GPIO(两种方法,驱动和mmap)(转载)
目前我所知道的在Linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉Linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据io ...
- Linux 下操作gpio(两种方法,驱动和mmap)
目前我所知道的在linux下操作GPIO有两种方法: 1. 编写驱动,这当然要熟悉linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据 ...
- linux下操作gpio寄存器的方法
一. 在驱动中: 1. 用的时候映射端口:ioremap; #define GPIO_OFT(x) ((x) - 0x56000000) #define GPFCON (*(volatile unsi ...
- 【嵌入式Linux+ARM】GPIO操作
1.GPIO介绍 GPIO(general purpose i/o ports)意思为通用输入/输出端口,通俗的说就是一些引脚. 我们可以通过它们输出高低电平 或 读入引脚的状态. s3c2440中有 ...
- linux kernel操作GPIO函数
一.头文件 #include <asm/gpio.h> 二.注册 GPIO int gpio_request(unsigned gpio, const char *label) 功能:申请 ...
- 嵌入式-Linux基础操作
Crtl+Alt+T:调出命令窗口 xrandr:列出分辨率列表 设置窗口的分辨率大小为1280x960:xrandr -s 1280x960 通过命令窗口来执行一段C语言程序: VI工具的使用: ( ...
- 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二
/** ****************************************************************************** * @author 暴走的小 ...
- 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之一
/** ****************************************************************************** * @author 暴走的小 ...
随机推荐
- Delphi的打开文件对话框-TOpenDialog
1.TOpenDialog组件的典型用法 “打开”对话框是用TOpenDialog组件实现的,TOpenDialog组件是非可视组件. Filter属性用于设置文件过滤器,让对话框只列出特定类型的文件 ...
- Java多线程详解(二)
评论区留下邮箱可获得<Java多线程设计模式详解> 转载请指明来源 1)后台线程 后台线程是为其他线程服务的一种线程,像JVM的垃圾回收线程就是一种后台线程.后台线程总是等到非后台线程死亡 ...
- hdu4028 The time of a day[map优化dp]
The time of a day Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others ...
- Express 框架的安装
从零开始用 Node.js 实现一个微博系统,功能包括路由控制.页面模板.数据库访问.用户注册.登录.用户会话等内容. Express 框架. MVC 设计模式. ejs 模板引擎 MongoDB 数 ...
- go练习4--json 序列号反序列化
//定义结构体 //首字母大写 , json:"msg_id" 是 tag type Message struct { MsgId string `json:"msg_i ...
- SpringMVC Controller介绍及常用注解
一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...
- 160227、javascript特效
1.给网页设定快捷键 js: function getkey(){ event = event || window.event; url = "www.baidu.com&q ...
- swoole--PHP的异步、并行、高性能网络通信引擎
swoole目前已被多家移动互联网.物联网.网络游戏.手机游戏企业使用,替代了C++.Java等复杂编程语言来实现网络服务器程序. 使用PHP+Swoole,开发效率可以大大提升.官方提供了基于swo ...
- jquery操作select标签change事件
$('#update_supply_id').on('change',function(){//判断是否选取prompt属性,无返回值: if($(this).val()){ var selectTe ...
- docx4j基本操作
最近需要用docx4j来对docx进行一些操作,用到的技术是docx4j,这个技术在国内其实用的不是很多,看了一些博主的文章,有些感悟,做了一些总结,如果有疑问或错误之处欢迎交流. 创建包: Word ...