linux 标准 GPIO 操作

简介: Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现。   #include    int gpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port。
Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现。
 
#include   
int gpio_request(unsigned gpio, const char *label);
获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port。非空的label指针有助于诊断。主要告诉内核这块地址被占用了。当其他地方调用同一地址的gpio_request就会报告错误,该地址已经被申请。在/proc/mem有地址占用表描述。先申请在访问的好处是避免资源竞争。
void gpio_free(unsigned gpio);
释放 GPIO port 的使用权,由参数 gpio 指定具体 port。
 
int gpio_direction_input(unsigned gpio);
将 GPIO port(由参数 gpio 指定)设为输入。
 
int gpio_direction_output(unsigned gpio, int value);
将 GPIO port(由参数 gpio 指定)设为输出,并指定输出电平值(value)。
 
int gpio_get_value(unsigned gpio);
获得 GPIO port 上的电平值并返回。
void gpio_set_value(unsigned gpio, int value);
设置 GPIO port 上的电平。
int gpio_to_irq(unsigned gpio);
通过获得 gpio port 对应的 irq number。
 
int gpio_cansleep(unsigned gpio)
这个主要区分是挂载在外部总线上的GPIO控制器,还是内部的GPIO控制器。因为外部总线上的GPIO控制器可以休眠,所以用这个来区分是否是扩展的GPIO,返回1是扩展的GPIO,0的话就是内部的GPIO。
 
int gpio_get_value_cansleep(unsigned gpio);
void gpio_set_value_cansleep(unsigned gpio, int value);
这些都是对可以休眠扩展的gpio的操作
 
static inline int gpio_is_valid(int number) 判断GPIO是否有效,有效返回0
int gpio_export(unsigned gpio, booldirection_may_change);
void gpio_unexport();
//在 /sys/class/gpio/下面创建和取消对应的gpio号
int gpio_export_link(struct device *dev, const char *name, unsigned gpio)
//创建到导出GPIO的 sysfs link ,第一个参数是在哪个dev下创建,第二个是参数名字,第三个是gpio编号
目录
相关文章
|
17天前
|
存储 安全 数据管理
探索Linux的挂载操作🌈
在Linux这个强大的操作系统中,挂载操作是一个基本而重要的概念。它涉及到文件系统、设备和数据访问,对于理解Linux的工作方式至关重要。那么,挂载操作究竟是什么,为什么我们需要它,如果没有它,我们将面临什么问题呢?让我们一起深入探讨。
探索Linux的挂载操作🌈
|
26天前
|
Linux Windows
Linux之基本指令操作
Linux之基本指令操作
|
1月前
|
Linux C语言
Linux系统下C语言的队列操作
Linux系统下C语言的队列操作
23 0
|
2月前
|
存储 Linux API
Linux应用开发基础知识——文件IO操作(三)
Linux应用开发基础知识——文件IO操作(三)
54 2
Linux应用开发基础知识——文件IO操作(三)
|
1月前
|
存储 算法 Shell
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
32 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
36 1
|
3月前
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
43 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
1天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
10 0
|
1月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
26 0
|
Linux C++
【Linux】—— 在Linux上进行读写文件操作
【Linux】—— 在Linux上进行读写文件操作