博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式 Linux 如何操作 GPIO ?
阅读量:6909 次
发布时间:2019-06-27

本文共 757 字,大约阅读时间需要 2 分钟。

作者:刘凯
链接: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 —— 目录(文件夹)及文件相关处理指令
查看>>
集合1(List)
查看>>
Sublime 使用技巧
查看>>
[Head First设计模式]策略模式
查看>>
阿里云ECS服务器源配置
查看>>
github插件
查看>>
iOS重绘机制drawRect
查看>>
Elementary Methods in Number Theory Exercise 1.2.4
查看>>
Spring+Ehcache
查看>>
winform:界面加载时自定义选中Button
查看>>
第四周总结
查看>>
maven-surefire-plugin:jar:2.12.4 has not been downloaded from it before.
查看>>
PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置)
查看>>
Python中的单例模式
查看>>
Android开发基础知识
查看>>
Ubuntu的快捷键
查看>>
视频压缩编码问答--转载
查看>>
android ListView中使用notifyDataSetChanged()不刷新
查看>>
Sandcastle入门:创建C#帮助文档
查看>>