GPIO子系统下的API函数

  • 1、GPIO子系统下的API函数
    • 1.1、gpio_request 函数
    • 1.2、 gpio_free 函数
    • 1.3、 gpio_direction_input 函数
    • 1.4、 gpio_direction_output 函数
    • 1.5、 gpio_get_value 函数
    • 1.6、 gpio_set_value 函数

1、GPIO子系统下的API函数

对于驱动开发人员,设置好设备树以后就可以使用 gpio 子系统提供的 API 函数来操作指定的 GPIO, gpio 子系统向驱动开发人员屏蔽了具体的读写寄存器过程。这就是驱动分层与分离的好处,大家各司其职,做好自己的本职工作即可。 gpio 子系统提供的常用的 API 函数有下面几个。

1.1、gpio_request 函数

gpio_request 函数用于申请一个 GPIO 管脚,在使用一个 GPIO 之前一定要使用 gpio_request进行申请,函数原型如下:

int gpio_request(unsigned gpio, const char *label)

参数:

参数 意义
gpio 要申请的 gpio 标号,使用 of_get_named_gpio 函数从设备树获取指定 GPIO 属性信息,此函数会返回这个 GPIO 的标号。
label 给 gpio 设置个名字。

返回值:

0,申请成功;其他值,申请失败。

1.2、 gpio_free 函数

如果不使用某个 GPIO 了,那么就可以调用 gpio_free 函数进行释放。函数原型如下:

void gpio_free(unsigned gpio)

参数:

参数 意义
gpio 要释放的 gpio 标号。

返回值: 无。

1.3、 gpio_direction_input 函数

此函数用于设置某个 GPIO 为输入,函数原型如下所示:

int gpio_direction_input(unsigned gpio)

参数:

参数 意义
gpio 要设置为输入的 GPIO 标号。

返回值:
0,设置成功;负值,设置失败。

1.4、 gpio_direction_output 函数

此函数用于设置某个 GPIO 为输出,并且设置默认输出值,函数原型如下:

int gpio_direction_output(unsigned gpio, int value)

参数:

参数 意义
gpio 要设置为输出的 GPIO 标号。
value GPIO 默认输出值。

返回值:
0,设置成功;负值,设置失败。

1.5、 gpio_get_value 函数

此函数用于获取某个 GPIO 的值(0 或 1),此函数是个宏,定义所示:

#define gpio_get_value __gpio_get_value
int __gpio_get_value(unsigned gpio)

参数:

参数 意义
gpio 要获取的 GPIO 标号。

返回值:
非负值,得到的 GPIO 值;负值,获取失败。

1.6、 gpio_set_value 函数

此函数用于设置某个 GPIO 的值,此函数是个宏,定义如下

#define gpio_set_value __gpio_set_value
void __gpio_set_value(unsigned gpio, int value)

参数:

参数 意义
gpio 要设置的 GPIO 标号。
value 要设置的值。

返回值:

关于 gpio 子系统常用的 API 函数就讲这些,这些是我们用的最多的

GPIO子系统下的API函数相关推荐

  1. c语言win api函数,Win2K下的Api函数的拦截

    这么多高手在这里,哎,小弟愿意向各位高手学习. Api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的Api函数的拦截,不外乎两种方法,第一种是Mr. Jeffrey Richt ...

  2. 在Windows/Linux下调用API函数实现重启系统

    一.Linux下重启系统 linux下很简单,直接看代码: #include <unistd.h> #include <sys/reboot.h>bool rebootSyst ...

  3. pinctrl 和 gpio 子系统

    内容来自<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf> 目录 pinctrl 子系统 pinctrl 子系统简介 I.MX6ULL 的 pinctrl 子系统 ...

  4. linux系统中pinctrl 和gpio子系统使用方法(教你点灯)

    如何使用pinctrl和gpio子系统点亮led pinctrl 子系统作用 设备树PIN配置 gpio子系统介绍 配置gpio相关 编写驱动程序 编写应用程序 pinctrl 子系统作用 pinct ...

  5. pinctrl和gpio子系统

    目录 1.pinctrl子系统 1)pinctrl子系统简介 2)I.MX6ULL的的pinctrl子系统驱动 3)设备树中添加pinctrl节点模板 2.gpio子系统 1)gpio子系统简介 2) ...

  6. 【正点原子Linux连载】第四十五章 pinctrl和gpio子系统实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  8. Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍

    文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...

  9. pinctrl 和 gpio 子系统 终极总结

    1.内核提供了 pinctrl  和  gpio 子系统用于 gpio驱动.linux是一个庞大而又完善的系统  不可能 让你用裸板开发的方式 去 操作 gpio. 该系统是按照面向对象的设计思想设计 ...

最新文章

  1. (每日一题)P3768 简单的数学题(确信)(莫反 + 欧拉反演 + 杜教筛 )
  2. android 36 线程通信
  3. boost::contract模块没有宏实现base types的测试程序
  4. QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决
  5. Leetcode动态规划:300.longest-increasing-subsequence(最长递增子序列)
  6. 两个类相互包含对方成员的问题(2)
  7. 基于gstreamer的支持动态获取多路流的rtsp server(笔记)
  8. 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
  9. 笨办法学python3-笨办法学python3PDF
  10. sublime编辑器 3143 license
  11. BLUE引擎M2运行几天后就不可以施放合击技能的方法
  12. 达梦数据库ODBC连接异常问题
  13. 把B站表情包植入MATLAB
  14. 关于玩美股期权的一些思路
  15. 大白菜u盘装系统教程linux,大白菜5.1版 快速U盘装系统综合教程
  16. 求和函数 sum详解
  17. matlab如何画双x坐标,matlab画双坐标图
  18. python获取当前时间的函数_Python日期与时间
  19. 分子对接结果分析和作图
  20. Web-html、css、JavaScript_02

热门文章

  1. SCI论文检索及论文的主要的获取方式
  2. vim编辑器常用命令介绍
  3. lodop实现打印的功能(下)
  4. cv2.imread无法读取/保存中文路径下的图片的解决方法
  5. web方式的mysql管理工具
  6. 亚马逊刷关键词软件——亚马逊鲲鹏系统
  7. 一种在一张图片上涂改的效果
  8. 本地mysql数据库安装
  9. Oracle数据库学习笔记(二十八)--在Java项目开发中使用ojdbc连接Oracle数据库
  10. Mysql之存储过程,动态创建表和数据库-,动态删除-yellowcong