当前位置: 首页 > news >正文

Linux 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);

设置GPIOIRQ中断类型:

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口使用方法
U-boot配置及启动流程
U-Boot启动过程完全分析
GPIO接口解析

相关文章:

  • 枚举和注解结合使用威力更大
  • 七个人生工具:SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  • 剑指offer(一) 二维数组的查找
  • [vijos1554bzoj1411]硬币游戏快速幂
  • iPhone X Web 设计
  • 使用isolation forest进行dns网络流量异常检测
  • nginx 开机自动启动
  • Python监控服务器利器--psutil
  • 主线程退出,子线程会退出么?
  • apue读书笔记之apue.h的设置
  • rpm 安装中的问题
  • 编程学习初体验(3. 语言的选择)
  • oracle12C—RMAN表级恢复
  • 黑客的思想
  • RPC协议
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 《Java编程思想》读书笔记-对象导论
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • github从入门到放弃(1)
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • in typeof instanceof ===这些运算符有什么作用
  • interface和setter,getter
  • iOS 颜色设置看我就够了
  • JavaScript中的对象个人分享
  • Js基础知识(一) - 变量
  • select2 取值 遍历 设置默认值
  • Webpack 4x 之路 ( 四 )
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 将 Measurements 和 Units 应用到物理学
  • 三分钟教你同步 Visual Studio Code 设置
  • 正则学习笔记
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 整理一些计算机基础知识!
  • ​2021半年盘点,不想你错过的重磅新书
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 计算机视觉入门
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #stm32整理(一)flash读写
  • (poj1.3.2)1791(构造法模拟)
  • (ros//EnvironmentVariables)ros环境变量
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (五)c52学习之旅-静态数码管
  • (转载)(官方)UE4--图像编程----着色器开发
  • (状压dp)uva 10817 Headmaster's Headache
  • **PHP分步表单提交思路(分页表单提交)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .describe() python_Python-Win32com-Excel
  • .gitignore文件_Git:.gitignore
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .netcore 获取appsettings
  • .NET关于 跳过SSL中遇到的问题