GPIO子系统下的API函数
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函数相关推荐
- c语言win api函数,Win2K下的Api函数的拦截
这么多高手在这里,哎,小弟愿意向各位高手学习. Api拦截并不是一个新的技术,很多商业软件都采用这种技术.对windows的Api函数的拦截,不外乎两种方法,第一种是Mr. Jeffrey Richt ...
- 在Windows/Linux下调用API函数实现重启系统
一.Linux下重启系统 linux下很简单,直接看代码: #include <unistd.h> #include <sys/reboot.h>bool rebootSyst ...
- pinctrl 和 gpio 子系统
内容来自<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf> 目录 pinctrl 子系统 pinctrl 子系统简介 I.MX6ULL 的 pinctrl 子系统 ...
- linux系统中pinctrl 和gpio子系统使用方法(教你点灯)
如何使用pinctrl和gpio子系统点亮led pinctrl 子系统作用 设备树PIN配置 gpio子系统介绍 配置gpio相关 编写驱动程序 编写应用程序 pinctrl 子系统作用 pinct ...
- pinctrl和gpio子系统
目录 1.pinctrl子系统 1)pinctrl子系统简介 2)I.MX6ULL的的pinctrl子系统驱动 3)设备树中添加pinctrl节点模板 2.gpio子系统 1)gpio子系统简介 2) ...
- 【正点原子Linux连载】第四十五章 pinctrl和gpio子系统实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍
文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...
- pinctrl 和 gpio 子系统 终极总结
1.内核提供了 pinctrl 和 gpio 子系统用于 gpio驱动.linux是一个庞大而又完善的系统 不可能 让你用裸板开发的方式 去 操作 gpio. 该系统是按照面向对象的设计思想设计 ...
最新文章
- (每日一题)P3768 简单的数学题(确信)(莫反 + 欧拉反演 + 杜教筛 )
- android 36 线程通信
- boost::contract模块没有宏实现base types的测试程序
- QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决
- Leetcode动态规划:300.longest-increasing-subsequence(最长递增子序列)
- 两个类相互包含对方成员的问题(2)
- 基于gstreamer的支持动态获取多路流的rtsp server(笔记)
- 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
- 笨办法学python3-笨办法学python3PDF
- sublime编辑器 3143 license
- BLUE引擎M2运行几天后就不可以施放合击技能的方法
- 达梦数据库ODBC连接异常问题
- 把B站表情包植入MATLAB
- 关于玩美股期权的一些思路
- 大白菜u盘装系统教程linux,大白菜5.1版 快速U盘装系统综合教程
- 求和函数 sum详解
- matlab如何画双x坐标,matlab画双坐标图
- python获取当前时间的函数_Python日期与时间
- 分子对接结果分析和作图
- Web-html、css、JavaScript_02