S3C2440中断
一、中断执行的流程
soc中断的执行流程
1、中断源发生中断请求
2、CPU检查该中断是否被屏蔽,以及总中断是否被屏蔽
3、考察中断优先级
4、保护现场
5、执行中断服务函数
6、恢复现场
二、中断初始化
1、设置中断模式(INTMOD)寄存器(设置中断处于那种状态)
此寄存器由32位组成,其每一位都都涉及一个中断源。如果某个指定为被设置为1,则在FIQ(快中断)模式 中处理相应中断。否则则在IRQ模式中处理。
2、设置中断屏蔽(INTMSK)寄存器(打开中断源)
此寄存器由32位组成,其每一位都都涉及一个中断源。如果某个指定为被设置为1,则CPU不会去服务来自 相应中断源(请注意即使在这种情况中,SRCPND寄存器的相应位也设置为1)的中断请求。如果屏蔽位为0,则 可以服务中断请求。
3、设置对应的中断源的触发方式以及工作方式
GPG等寄存器,使其工作在中断模式下
EXTINTn(外部中断控制寄存器n)设置中断触发方式
8个外部中断可以由多种信号触发方式所请求。EXTINT寄存器为外部中断配制信号触发方式为电平触发或边 沿触发,同时还配制信号触发极性。
4、将内部的具体的中断屏蔽位进行置位EINTMASK(外部中断屏蔽寄存器)
0 = 使能中断 1 = 禁止中断
三、中断执行
1、执行中断服务程序完之后恢复
EINTPEND(外部中断挂起寄存器),记录了有没有该中断源发生中断,所以一旦中断进行响应,我们需要立刻将其置1清零此位(具体哪一位中断进行响应)
中断挂起(INTPND)寄存器 中断挂起寄存器中32位的每一位都表明了是否相应未屏蔽并且正在等待中断服务的中断请求具有最高的优先 级。当INTPND寄存器在优先级逻辑后被定位了,只有1位可以设置为1并且产生中断请求IRQ给CPU。IRQ的 中断服务程序中可以读取此寄存器来决定服务32个中断源的哪个源。
SRCPND寄存器由32位组成,其每一位都涉及一个中断源。如果中断源产生了中断则相应的位被设置为1并 且等待中断服务。因此此寄存器指示出是哪个中断源正在等待请求服务。注意SRCPND寄存器的每一位都是由中 断源自动置位,其不顾INTMASK寄存器中的屏蔽位。另外SRCPND寄存器不受中断控制器的优先级逻辑的影响。 在指定中断源的中断服务程序中,必须通过清除SRCPND寄存器的相应位来正确的获得来自相同源的中断请 求。如果从ISR中返回并且未清除相应位,则中断控制器的操作就好像其它中断请求已经从同一个源进入了。换句 话说,如果SRCPND寄存器的指定位被设置为1,其通常被认作一个有效中断请求正在等待服务。 清除相应位的时间依赖于用户的需要。如果希望收到来自相同冤源的其它有效请求,则应该首先清除相应位, 并且接着使能中断。 可以通过写入一个数据到此寄存器来清除SRCPND寄存器的指定位。其只清除那些数据中被设置为1的相应 位置的SRCPND位。那些数据中被设置为0的相应位置的位保持不变。
注意
要先进行清SRCPND,否则会一直进行中断响应
中断偏移(INTOFFSET)寄存器 中断偏移寄存器中的值表明了是哪个IRQ模式的中断请求在INTPND寄存器中。此位可以通过清楚SRCPND 和INTPND自动清除。(通过查改位置可以判断是那个中断进行响应)
四、例子
//初始化
void init_key(void)
{unsigned int t;INTMOD &= ~(1 << 5); INTMSK &= ~(1 << 5);t = GPGCON;t &= ~((3 << 0)|(3 << 3) | (3 << 5));t |= (2 << 0) | (2 << 6) | (2 << 10);GPGCON = t;t = EXTINT1;t &= ~((0x0F << 0)| (0x0F << 8) | (0x0F << 16));t |= (1 << 3) | (1 << 11) | (1 << 13);t |= (2 << 0) | (2 << 12) | (2 << 20);EXTINT1 = t;EINTMASK &= ~((1 << 8)| (1 << 11) | (1 << 13));}
//函数的执行
void irq_handler(void)
{if(INTOFFSET == 5){if((EINTPEND & (1 << 8)) != 0){led_on(4);}else if((EINTPEND & (1 << 11)) != 0){beep_on();}else if((EINTPEND & (1 << 13)) != 0){beep_off();}EINTPEND = EINTPEND;}SRCPND = SRCPND ;INTPND = INTPND;
}
相关文章:
S3C2440中断
一、中断执行的流程 soc中断的执行流程 1、中断源发生中断请求 2、CPU检查该中断是否被屏蔽,以及总中断是否被屏蔽 3、考察中断优先级 4、保护现场 5、执行中断服务函数 6、恢复现场 二、中断初始化 1、设置中断模式(INTMOD)寄存器(…...
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB using Qt. Download qsqlmysql.dll binaries built from official Qt …...
SQLyou基础用法讲解
文章目录 SQLyog 基础知识讲解 1. 数据定义语言 (DDL)创建数据库创建表修改表删除表 2. 数据操作语言 (DML)插入数据批量插入数据更新数据条件更新删除数据条件删除 3. 数据查询语言 (DQL)查询数据查询所有数据使用排序使用聚合函数分组查询使用 HAVING 子句 4. 事务5. 索引创建…...
Can‘t get Kerberos realm
近期封装Ozone客户端,需要走kerberos登陆,遇到了一个问题,花了很长时间解决。记录一下,跟网上能搜到的解决方案不大一样。 先看有问题的代码 Configuration config new Configuration();ConfigurationUtils.setHadoopConfig(conf…...
[python]从零开始的PySide安装配置教程
一、PySide是什么? PySide 是 Qt for Python 项目的一部分,它提供了与 PyQt 类似的功能,使开发者能够使用 Python 编程语言来构建基于 Qt 的图形用户界面 (GUI) 应用程序。PySide 是由 Qt 公司官方维护的,而 PyQt 则是由第三方开发…...
LeetCode[中等] 74.搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…...
overleaf如何下载论文的pdf
用overleaf写完英文论文后,要将论文保存为PDF格式 点击图片中的下载按钮 然后选择一个路径保存论文的PDF格式即可。...
Java 每日一刊(第13期):this super static
“优秀的代码不仅仅是给机器看的,更是给人看的。” 前言 这里是分享 Java 相关内容的专刊,每日一更。 本期将为大家带来以下内容: this 关键字super 关键字static 关键字 this 关键字 this 关键字是 Java 中最常见的关键字之一…...
关于一些Spring的配置的作用
文章目录 spring.profiles.activejmx.default-domainmain.allow-bean-definition-overridingmain.allow-circular-referencescloud.nacoscloud.nacos.configcloud.nacos.shared-configsmvc.pathmatch.matching-strategy spring:profiles:active: ${config.profile}# include…...
利用Python与Ansible实现高效网络配置管理
利用Python与Ansible实现高效网络配置管理 在当今复杂多变的网络环境中,自动化配置管理工具成为了IT运维团队不可或缺的工具。Python以其强大的编程能力和丰富的库支持,结合Ansible这一流行的自动化运维工具,能够极大地提升网络配置管理的效…...
JDBC技术在不同数据库系统中的兼容性及Java数据库交互技术概览
目录 1. JDBC技术在不同数据库系统中的兼容性 2. 除了JDBC,还有哪些技术可以实现Java与数据库的交互? 3. 结论 在Java应用程序中,数据库交互是一个核心功能。Java Database Connectivity (JDBC) 是实现这一功能的标准技术之一。然而&#…...
双击热备 Electron网页客户端
安装流程: 1.下载node.js安装包进行安装 2.点击Next; 3.勾选,点击Next; 4.选择安装目录 5.选择Online 模式 6.下一步执行安装 。 7.运行cmd,执行命令 path 和 node --version,查看配置路径和版本 8.Goland安装插件node.js 9.配置运行…...
数据中台系统产品原型RP原型Axure高保真交互原型 源文件分享
在数字化时代,数据已经成为企业最宝贵的资产之一。为了更好地管理和利用这些数据,这边为大家整理了一套数据中台Axure高保真原型。这套原型致力于为企业提供全方位的数据服务,助力企业实现数据驱动的创新发展。 下载及预览地址:h…...
论文阅读笔记:Sapiens: Foundation for Human Vision Models
Sapiens: Foundation for Human Vision Models 1 背景1.1 问题1.2 目标 2 方法3 创新点4 模块4.1 Humans-300M数据集4.2 预训练4.3 2D位姿估计4.4 身体部位分割4.5 深度估计4.6 表面法线估计 5 实验5.1 实现细节5.2 2D位姿估计5.3 身体部位分割5.4 深度估计5.5 表面法线估计5.6…...
【学术会议:中国厦门,为全球的计算机科学与管理科技研究者提供一个国际交流平台】第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
您的学术研究值得被更多人看到! 在这里,我为您提供精准的会议推荐,包括计算机科学、管理科技、信息系统、人工智能、供应链管理等领域的国际会议。高效的稿件录用流程和优质的检索服务将确保您的研究成果迅速传播。关注我,寻找与…...
RK3588/RK3588s运行yolov8达到27ms
前言 Hello,小伙伴们~~我最近做了一个比较有意思的东西,想起来也好久没有写博客了,就记录一下吧。希望和大家一起学习,一起进步! 我简单介绍一下我最近做的这个东西的经过哈~上个月在B站上看到了一个博主发了一条视频关…...
2024年华为杯中国研究生数学建模竞赛E题(高速公路应急车道紧急启用模型)思路
1. 统计四个观测点的交通流参数随时间的变化规律 思路: 从视频数据中提取流量、密度、速度等交通流参数。进行时间序列统计,分析其随时间的变化规律。通过数据可视化,帮助分析流量波动、车速变化等现象。主要步骤: 读取视频数据:利用提供的Python程序读取每个视频文件。提…...
np.random.seed设完又想用随机seed怎么办
Python 设完np random seed 之后又想不设这个seed让它random,怎么办? 在Python的NumPy库中,一旦你设置了随机种子(通过numpy.random.seed()函数),所有后续的随机操作都会基于这个种子生成可预测的结果。如…...
[数据结构]动态顺序表的实现与应用
文章目录 一、引言二、动态顺序表的基本概念三、动态顺序表的实现1、结构体定义2、初始化3、销毁4、扩容5、缩容5、打印6、增删查改 四、分析动态顺序表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引言 想象一下,你有一个箱子(静态顺序…...
Invalid Private Key, Not a valid string or uint8Array
报这种错误:一般在生成private key前面添加"0x"即可解决。我就是在私钥前面添加了"0x"解决了。 在学习web3时,使用助词生成的私钥,然后由私钥导出keystore就报错: ERROR Invalid Private Key, Not a valid …...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
