Linux中gpio接口的使用方法示例

 更新时间:2017年11月03日 10:17:40   作者:txgcwm  
这篇文章主要给大家介绍了关于Linux中gpio接口的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的

使用gpio

使用gpio接口需要包含#include <linux/gpio.h> ,在驱动中使用延时函数mdelay,需要包含#include <linux/delay.h>文件,Documentation/gpio.txt文件有作详细说明。

判断一个IO是否合法:

int gpio_is_valid(int number);

设置GPIO的方向,如果是输出同时设置电平:

/* set as input or output, returning 0 or negative errno */
int gpio_direction_input(unsigned gpio);
int gpio_direction_output(unsigned gpio, int value);

获取输入引脚的电平:

/* GPIO INPUT: return zero or nonzero */
int gpio_get_value(unsigned gpio);

/* GPIO OUTPUT */
void gpio_set_value(unsigned gpio, int value);

int gpio_cansleep(unsigned gpio);

/* GPIO INPUT: return zero or nonzero, might sleep */
int gpio_get_value_cansleep(unsigned gpio);

/* GPIO OUTPUT, might sleep */
void gpio_set_value_cansleep(unsigned gpio, int value);

获取一个GPIO并声明标签:

/* request GPIO, returning 0 or negative errno.
* non-null labels may be useful for diagnostics.
*/
int gpio_request(unsigned gpio, const char *label);

/* release previously-claimed GPIO */
void gpio_free(unsigned gpio);

将GPIO映射为IRQ中断:

/* map GPIO numbers to IRQ numbers */
int gpio_to_irq(unsigned gpio);

/* map IRQ numbers to GPIO numbers (avoid using this) */
int irq_to_gpio(unsigned irq);

设置GPIO的IRQ中断类型:

if (!sw->both_edges) {
 if (gpio_get_value(sw->gpio)) {
 set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_FALLING);
 } else {
 set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING);
 }
}

参考文章

Linux中的gpio口使用方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Linux下简易进度条的实现代码

    Linux下简易进度条的实现代码

    下面小编就为大家带来一篇Linux下简易进度条的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • linux查看硬盘大小与挂载硬盘的实现

    linux查看硬盘大小与挂载硬盘的实现

    这篇文章主要介绍了linux查看硬盘大小与挂载硬盘的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 在linux中执行sql文件方式

    在linux中执行sql文件方式

    在Linux中执行SQL文件,首先需要将本地SQL文件导出,然后将其上传到服务器,通过执行SQL文件,可以将数据库备份或恢复到服务器上,以上经验供参考,希望能帮助到大家
    2025-02-02
  • ssh报错no key alg的解决方法(关于低版本连接高版本ssh)

    ssh报错no key alg的解决方法(关于低版本连接高版本ssh)

    这篇文章主要介绍了ssh报错no key alg(关于低版本连接高版本ssh),通过ssh-keygen命令重新生成ssh主机秘钥,可以不用重启sshd服务,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • ubantu 16.4下Hadoop完全分布式搭建实战教程

    ubantu 16.4下Hadoop完全分布式搭建实战教程

    这篇文章主要给大家介绍了关于在ubantu 16.4下Hadoop完全分布式搭建的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • Ubuntu下安装Chrome的方法分享

    Ubuntu下安装Chrome的方法分享

    本文给大家分享的是Ubuntu下安装Chrome的方法,安装的过程中发现还是挺麻烦的,就记录下来推荐给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • 浅谈linux下的串口通讯开发

    浅谈linux下的串口通讯开发

    下面小编就为大家带来一篇浅谈linux下的串口通讯开发。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • rsync 数据同步使用详解

    rsync 数据同步使用详解

    rsync 是很强大的同步工具 本地远程皆宜 不少project都提供 http ftp rsync 等mirror方式 rsync官方主页是 http://samba.anu.edu.au/rsync/
    2008-09-09
  • linux中启动tomcat后浏览器无法访问的解决方法

    linux中启动tomcat后浏览器无法访问的解决方法

    最近在启动了tomcat后发现了一些问题,通过查找相关资料终于解决了,下面将解决方法分享给大家,这篇文章主要给大家介绍了关于linux中启动tomcat后浏览器无法访问的解决方法,需要的朋友可以参考下。
    2017-12-12
  • CentOS下tar打包解压详解(解压到指定文件夹)

    CentOS下tar打包解压详解(解压到指定文件夹)

    本篇文章主要介绍了CentOS下tar打包解压,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论