瑞芯微RK3128的gpio控制--输入输出和中断

2023-11-05

第一章 gpio的dts设置

1、输出引脚

reset-gpios = <&gpio0 GPIO_D1 GPIO_ACTIVE_HIGH>;

以上参数分别对应:引脚的名称,第几组gpio,第几个引脚,工作模式
注:以上配置对应为 GPIO0_D1

2、输入(中断)引脚

irq-gpios = <&gpio1 GPIO_B0 IRQ_TYPE_LEVEL_LOW>;

以上参数分别对应:引脚的名称,第几组gpio,第几个引脚,工作模式
注:以上配置对应为 GPIO1_B0

第二章 dts和驱动代码的实现

1、完整的dts

gt9xx@5d {
		// ---------- 复位对应 GPIO0_D1
		reset-gpios = <&gpio0 GPIO_D1 GPIO_ACTIVE_HIGH>;
		// ---------- 中断引脚 GPIO1_B0
		irq-gpios = <&gpio1 GPIO_B0 IRQ_TYPE_LEVEL_LOW>;
};

2、驱动代码

2.1、找到dts中对应的引脚

使用API:of_get_named_gpio获取到引脚的编号。

rst_gpio = of_get_named_gpio(np, "reset-gpios", 0);//获取gpio
irq_gpio = of_get_named_gpio(np, "irq-gpios", 0);//获取中断的gpio

2.2、检查引脚状态

使用API:gpio_is_valid检查引脚状态,返回1表示引脚可操作。
if (!gpio_is_valid(rst_gpio))//检查gpio
	printk( "No valid rst gpio");
if (!gpio_is_valid(irq_gpio))
		printk( "No valid irq gpio");

2.3、释放引脚

if (gpio_is_valid(rst_gpio))//检查引脚可操作
		gpio_free(rst_gpio);//释放复位引脚
if (gpio_is_valid(irq_gpio))//检查引脚可操作
		gpio_free(irq_gpio);//释放中断引脚

注:获取、检查和释放使用的API都是一样的方法

2.4、gpio设置成输入输出模式

普通gpio引脚的控制

if (gpio_is_valid(rst_gpio)) {//检查引脚是否可用
	gpio_direction_output(rst_gpio, 0);//设置成输出低电平
	gpio_direction_output(rst_gpio, 1);//设置成输出高电平
	gpio_direction_input(rst_gpio);//设置成输入模式
}

中断引脚的控制

if (gpio_is_valid(irq_gpio)){
			gpio_direction_output(irq_gpio, 0);//设置成输出低电平
			gpio_direction_output(irq_gpio, 1);//设置成输出高电平
}

将中断引脚转成中断模式

if (gpio_is_valid(irq_gpio)){
		irq = gpio_to_irq(irq_gpio);//返回值是中断号
		ret = request_threaded_irq(irq, NULL,gtp_irq_handler,
				irq_flags | IRQF_ONESHOT,name,ts);//申请中断
		
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

瑞芯微RK3128的gpio控制--输入输出和中断 的相关文章

随机推荐

  • 《武术与设计模式》创建型

    本人喜欢武术 故写下此篇 权当消遣 仅供参考 创建型 原意 创建对象的模式 单例 程序 一个对象就存在一个 武林 所谓 武林至尊 宝刀屠龙 号令天下 莫敢不从 匠人在打造屠龙宝刀时 决定打造一件世间仅此一件的宝物 简单工厂 程序 某种类型指
  • 【数据库】MySQL中的锁机制

    MySQL中的锁机制 数据库锁定机制简单来说 就是数据库为了保证数据的一致性 而使各种共享资源在被并发访问变得有序所设计的一种规则 MySQL 数据库由于其自身架构的特点 存在多种数据存储引擎 每种存储引擎的锁定机制都是为各自所面对的特定场
  • 在树莓派linux系统下写c程序

    本文主要介绍如何在树莓派 ubuntu mate系统 下写第一个c程序 两种方式 一是emacs 二是vi 一 用emacs写c程序 1 打开终端 输入 emacs hello em world c 如果你还没有安装 会出现以下提示 如图
  • 关于解决多台服务器间的文件实时同步问题

    最近要做一个相关的解决方案 在虚拟机测试没有问题 给大家分享出来 有更好的解决方案 欢迎讨论 1 1 inotify相关介绍 1 rsync 与传统的cp tar备份方式相比 rsync具有安全性高 备份迅速 支持增量备份等优点 通过rsy
  • java NIO

    概述 NIO主要有三大核心部分 Channel 通道 Buffer 缓冲区 Selector 选择器 NIO 与 IO的区别 IO是面向流的 NIO是面向缓冲区的 Java IO面向流意味着每次从流中读一个或多个字节 直至读取所有字节 它们
  • 晦涩难懂的电路反馈,看完终于懂了!

    一 反馈的基本概念 1 1 什么是反馈 反馈 就是把放大电路的输出量的一部分或全部 通过反馈网络以一定的方式又引回到放大电路的输入回路中去 以影响电路的输入信号作用的过程 1 2 放大电路中引入反馈的作用 放大电路静态工作点会随温度的变化而
  • GDI+ Graphics类

    1 GDI 的核心 Graphics类 1 The Graphics class provides methods for drawing lines curves figures images and text A Graphics ob
  • 操作系统期末复习总结

    操作系统期末复习总结 第一章 操作系统引论 1 1操作系统的目标和作用 1 1 1操作系统的目标 在计算机系统上配置操作系统 其主要目标是 方便性 有效性 可扩充性和开放性 方便性 配置OS后方便使用 有效性 提高系统资源的利用率 可扩充性
  • 西门子S7-1200PLC脉冲控制伺服程序案例

    西门子S7 1200PLC脉冲控制伺服程序案例 此程序是关于西门子1200PLC以PTO脉冲方式控制伺服电机 步进电机的功能块程序 包含两套程序 第一套程序是用梯形图写的 第二套程序是用SCL高级编程语言写的 两套程序实现的功能一致 脉冲模
  • C++——内存分区

    内存分区模型 内存分区 四大分区 编译后运行前 程序运行后 栈区 堆区 1 new使用 2 释放空间 3 new 数组 内存分区 四大分区 代码区 二进制代码 操作系统管理 全局区 全局变量 静态变量 常量 栈区 编译器自动分配释放 函数的
  • laravel 8实现 订单表按月份水平分表

    实现思路 1 设计基础表orders 2 通过后台代码创建今年6月份订单表 order 202206 今年7月份订单表 order 202207 创建表的时候需要进行判断 如果表存在 则不需要创建 这个后台代码会被多次使用并可以重复使用 选
  • Android 开发最佳实践

    https github com futurice android best practices blob master translations Chinese README cn md 组织好它们 在layoutout XMLs布局时
  • windows 向 iPad导入文件

    iPad导入 步骤 截图 步骤 Windows 下载 iTunes 打开 iTunes 账户 gt 授权 gt 对这台电脑授权 然后输入账户密码登陆 找到当前设备 gt 文件共享 gt 找到对应程序 gt 添加文件 截图
  • elementPlus自动按需导入图标

    最近在使用Vue3重构自己的项目 需要用到elementPlus里面的图标 vite中已经配置了elementPlus中的组件自动按需引入 看看图标引入的相关文档 没道理为了图标又全局引入elementPlus吧 于是就有了图标自动按需引入
  • es or查询

    跨索引查询 SearchRequest request new SearchRequest index1 index2 想实现类似于 select from table where a 1 and b 1 or startTime gt 2
  • 数据结构与算法(十)图的入门

    图的实际应用 在现实生活中 有许多应用场景会包含很多点以及点点之间的连接 而这些应用场景我们都可以用即将要学习的图这种数据结构去解决 地图 我们生活中经常使用的地图 基本上是由城市以及连接城市的道路组成 如果我们把城市看做是一个一个的点 把
  • 传输层的TCP和UDP

    TCP IP 中有两个具有代表性的传输层协议 分别是 TCP 和 UDP TCP 是面向连接的 可靠的流协议 流就是指不间断的数据结构 当应用程序采用 TCP 发送消息时 虽然可以保证发送的顺序 但还是犹如没有任何间隔的数据流发送给接收端
  • 【MySQL SQL语句】DROP TABLE简述

    标准语法 DROP TEMPORARY TABLE IF EXISTS tbl name tbl name RESTRICT CASCADE DROP TABLE 删除一个或多个表 你必须对每个表具有DROP权限 注意 使用此语句时要小心操
  • 打开Vue项目时出现“error:03000086:digital envelope routines::initialization error”的解决方法

    首先看用 VSCode 打开 Vue项目 清除 npm 缓存 因为 npm 有缓存时 常常出现安装依赖不成功的现象 并且一旦出现问题 报错信息很完善 但根据报错信息一项一项去解决 却很容易陷入解决不了关键问题的死循环当中 找不出原因 控制台
  • 瑞芯微RK3128的gpio控制--输入输出和中断

    第一章 gpio的dts设置 1 输出引脚 reset gpios lt gpio0 GPIO D1 GPIO ACTIVE HIGH gt 以上参数分别对应 引脚的名称 第几组gpio 第几个引脚 工作模式 注 以上配置对应为 GPIO0