exynos4412—中断处理

一、什么是中断

一种硬件上的通知机制,用来通知CPU发生了某种需要立即处理的事件

分为:

  1. 内部中断 CPU执行程序的过程中,发生的一些硬件出错、运算出错事件(如分母为0、溢出等等),不可屏蔽
  2. 外部中断 外设发生某种情况,通过一个引脚的高、低电平变化来通知CPU (如外设产生了数据、某种处理完毕等等)

二、中断处理原理

任何一种中断产生,CPU都会暂停当前执行的程序,跳转到内存固定位置执行一段程序,该程序被称为总的中断服务程序,在该程序中区分中断源,然后进一步调用该中断源对应的处理函数。

中断源对应的处理函数被称为分中断处理程序,一般每一个分中断处理程序对应一个外设产生的中断

写驱动时,如果外设有中断,则需要编写一个函数(分中断处理程序)来处理这种中断

三、中断接口

3.1 中断申请

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev)
/*
参数:irq:所申请的中断号handler:该中断号对应的中断处理函数flags:中断触发方式或处理方式 触发方式:IRQF_TRIGGER_NONE 		//无触发IRQF_TRIGGER_RISING 	//上升沿触发IRQF_TRIGGER_FALLING  //下降沿触发IRQF_TRIGGER_HIGH  	//高电平触发IRQF_TRIGGER_LOW 		//低电平触发处理方式:IRQF_DISABLED		//用于快速中断,处理中屏蔽所有中断IRQF_SHARED		  //共享中断name:中断名 /proc/interruptsdev:传递给中断例程的参数,共享中断时用于区分那个设备,一般为对应设备的结构体地址,无共享中断时写NULL
返回值:成功:0 失败:错误码
*/

3.2 中断释放

void free_irq(unsigned int irq, void *dev_id)/*
功能:释放中断号
参数:irq:设备号dev_id:共享中断时用于区分那个设备一般强转成设备号,无共享中断时写NULL
*/

3.3 中断处理函数原型

typedef irqreturn_t (*irq_handler_t)(int, void *);
/*
参数:int:中断号void*:对应的申请中断时的dev_id
返回值:typedef enum irqreturn irqreturn_t;	//中断返回值类型enum irqreturn {IRQ_NONE	= (0 << 0),IRQ_HANDLED	= (1 << 0),IRQ_WAKE_THREAD	= (1 << 1),};返回IRQ_HANDLED表示处理完了,返回IRQ_NONE在共享中断表示不处理
*/

四、按键驱动

按键原理图:

在这里插入图片描述

exynos4412-fs4412.dts中增加节点

mykey2_node {compatible = "mykey2,key2";key2-gpio = <&gpx1 1 0>;interrupt-parent = <&gpx1>;interrupts = <1 3>;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scitb包1.6版本发布,一个为制作专业统计表格而生的R包

目前&#xff0c;本人写的scitb包1.6版本已经正式在R语言官方CRAN上线&#xff0c;scitb包是一个为生成专业化统计表格而生的R包。 可以使用以下代码安装 install.packages("scitb")安装过旧版本的从新安装一次就可以升级了,根据粉丝的建议&#xff0c;增加了Overal…

RocketMQ-RocketMQ集群实践(搭建)

搭建RocketMQ可视化管理服务 下载可视化客户端源码下载 | RocketMQ 这里只提供了源码&#xff0c;并没有提供直接运行的jar包。将源码下载下来后&#xff0c;需要解压并进入对应的目录&#xff0c;使用maven进行编译。(需要提前安装maven客户端) mvn clean package -Dmaven.t…

手动部署1个Cloud Run service

什么是Cloud Run 来自chatgpt&#xff1a; Google Cloud Run 是一项全托管的服务器托管平台&#xff0c;它允许您在容器化的环境中运行无服务器应用程序。Cloud Run 提供了一种简单而灵活的方式来构建、部署和扩展应用程序&#xff0c;无需管理底层基础设施。 以下是 Cloud …

sql常用语法练习

表名word namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope468781153712000000AngolaAfrica124670020609294100990000000.... 基础练习 基础查询 1、阅…

RocketMq实战(待完善)

目录 生产者 发送消息固定步骤 发送模式 1. 单向发送 2. 同步发送 3. 异步发送 生产消息完整代码 消费者 消费消息固定步骤 简单消费代码示例 消息模型 广播消息 顺序消息 延迟消息 批量消息 事务消息 生产者 发送消息固定步骤 1.创建消息生产者producer&#…

操作系统的运行机制+中断和异常

一、CPU状态 在CPU设计和生产的时候就划分了特权指令和非特叔指令&#xff0c;因此CPU执行一条指令前就能断出其类型 CPU有两种状态&#xff0c;“内核态”和“用户态” 处于内核态时&#xff0c;说明此时正在运行的是内核程序&#xff0c;此时可以执行特权指令。 处于用户态…

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

环境准备Jenkins工具、环境、插件配置全局变量配置安装插件Deploy to containerMaven Integration plugin配置国内mvn源 创建maven项目 环境准备 1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage Jenkins>tools>JDK 安装 安装插件 Deploy to contai…

231206日课:高原反应的第三天

早冥读写跑&#xff08;早起、冥想、阅读、写作、跑步&#xff09; 践行第三天 一、知识基础 早起 冥想 阅读 写作 运动 二、个人化运用 日程复盘 优秀的AI生成的表格 汇总信息时间段安排睡眠时间20:54-04:57睡眠时间 (8小时3分钟)早晨时间安排04:57-05:00起床、洗漱早晨时间安…

C++异常抛出机制:throw和try_catch

文章目录 前言正文初识throw和try_catch深入&#xff08;std::runtime_error和std::exception&#xff09;异常处理的必要性 前言 还记得初学C的时候&#xff0c;我抱着《C primer 5th》这本书硬啃&#xff0c;作为一个初学者&#xff0c;里面很多东西当时都很不理解&#xff…

Docke自学笔记

概述 docker是什么呢&#xff1f;就是容器呀&#xff0c;像你用的Tomcat一样都是容器&#xff0c;只不过&#xff0c;docker可以用极少的资源来运行&#xff0c;极大的利用计算资源&#xff0c;不像你要隔离应用一样需要启用虚拟机&#xff0c;你的应用是部署在虚拟机上&#…

分割算法-大津算法

分割算法-大津算法 一、什么是大津算法二、算法原理三、公式推导四、代码五、算法适用性 大津算法介绍以及C函数代码实现。 一、什么是大津算法 大津算法&#xff08;Otsu&#xff09;由日本学者大津展之在1979年提出&#xff0c;又称最大类间方差法。此法求得的阈值&#xff…

智能井盖传感器怎么安装?井盖传感器介绍

一提到井盖相信大伙都不陌生。无论是城市的繁华商业街&#xff0c;还是乡村的宁静马路&#xff0c;随处都可以看到它的身影。它可能看起来普普通通&#xff0c;但却是城市基础设施中不可或缺的一部分。随着科学技术的发展对井盖的管理也越来越智能化&#xff0c;如多个地区纷纷…

【Quasar】暗黑主题随系统切换部分组件无法随系统切换

问题描述 Quasar部分组件无法随系统切换主题 。 假如系统、Quasar主题为白天模式。Quasar设置主题随系统切换&#xff0c;当系统切换暗黑模式时&#xff0c;Quasar导航栏无法正常切换为暗黑模式&#xff0c;此时背景还是白天模式&#xff0c;如图 正常切换参考图 正常暗黑…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《计及管网选型与潮流约束的区域综合能源系统分期协同规划》

这个标题涉及到区域综合能源系统的规划&#xff0c;其中考虑了两个关键因素&#xff1a;管网选型和潮流约束。下面对标题中的关键术语进行解读&#xff1a; 区域综合能源系统&#xff1a; 这指的是一个综合考虑多种能源形式&#xff08;比如电力、热能、气体等&#xff09;的系…

挑选数据可视化工具:图表类型、交互功能与数据安全

作为一名数据分析师&#xff0c;我经常需要使用各种数据可视化工具来将数据以直观、清晰的方式呈现出来&#xff0c;以便更好地理解和分析。在市面上的众多可视化工具中&#xff0c;我根据实际需求和项目特点进行选择。本文将从以下几个角度对市面上的数据可视化工具进行对比&a…

Python高级数据结构——B树和B+树

Python中的B树和B树&#xff1a;高级数据结构解析 B树和B树是一种多叉树&#xff0c;常用于处理大量数据的存储和检索操作。它们广泛应用于文件系统、数据库索引等领域&#xff0c;具有高效的插入、删除和搜索性能。在本文中&#xff0c;我们将深入讲解Python中的B树和B树&…

C++类和对象——(8)类的组合

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 人生就像骑单车&#xff0c;想保持平衡…

PHP入门软件Wampserver与vscode

PHP入门软件Wampserver与vscode Wampserver 一个集成的PHP环境&#xff0c;非常好用&#xff0c;上链接官网&#xff1a;https://www.wampserver.com/#download-wrapper 推荐华军https://www.onlinedown.net/soft/82112.htm 无脑下一步就行&#xff0c;会出现两个弹窗全点否。…

OMSA无法打开无法显示等服务异常时如何处理

文章目录 为何需要重启OMSAWindows 重启OMSA服务Linux 重启OMSA服务VMware 环境重启OMSA服务重启无效的解决办法推荐阅读 为何需要重启OMSA 在安装 OMSA 的服务器中&#xff0c;OMSA 管理软件运行可能会不稳定。例如&#xff1a; 某些信息&#xff08;如存储信息&#xff09;…

Redis quicklist源码+listpack源码(6.0+以上版本)

ziplist设计上的问题&#xff0c;每一次增删改都需要计算前面元素的空间和长度&#xff08;prevlen&#xff09;&#xff0c;这种设计缺陷非常明显&#xff0c;一旦其中一个entry发生修改&#xff0c;以这个entry后面开始&#xff0c;全部需要重新计算prevlen&#xff0c;因此诞…