关于ARM2440中断源个数的一点想法[通俗易懂]

关于ARM2440中断源个数的一点想法[通俗易懂]关于ARM2440中断源个数的一点想法

大家好,又见面了,我是你们的朋友全栈君。

S3c2440支持多达36个内部中断源和24个外部中断源,分别使用内部终端屏蔽寄存器INTMSK和外部中断寄存器MSK进行屏蔽控制。其中,外部中断源通过GPIO以复用的方式成为内部中断源的一部分。

但是我们清楚,INTMSK是一个32位的寄存器,最多只能支持32中断,它是如何对应这么多中断的呢?

首先我们先看INTMSK对应的位。


INTERRUPT MASK (INTMSK) REGISTER (Continued)


INT_ADC [31] 0 = Service available, 1 = Masked 1


INT_RTC [30] 0 = Service available, 1 = Masked 1


INT_SPI1 [29] 0 = Service available, 1 = Masked 1


INT_UART0 [28] 0 = Service available, 1 = Masked 1


INT_IIC [27] 0 = Service available, 1 = Masked 1


INT_USBH [26] 0 = Service available, 1 = Masked 1


INT_USBD [25] 0 = Service available, 1 = Masked 1


INT_NFCON [24] 0 = Service available, 1 = Masked 1


INT_UART1 [23] 0 = Service available, 1 = Masked 1


INT_SPI0 [22] 0 = Service available, 1 = Masked 1


INT_SDI [21] 0 = Service available, 1 = Masked 1


INT_DMA3 [20] 0 = Service available, 1 = Masked 1


INT_DMA2 [19] 0 = Service available, 1 = Masked 1


INT_DMA1 [18] 0 = Service available, 1 = Masked 1


INT_DMA0 [17] 0 = Service available, 1 = Masked 1


INT_LCD [16] 0 = Service available, 1 = Masked 1


INT_UART2 [15] 0 = Service available, 1 = Masked 1


INT_TIMER4 [14] 0 = Service available, 1 = Masked 1


INT_TIMER3 [13] 0 = Service available, 1 = Masked 1


INT_TIMER2 [12] 0 = Service available, 1 = Masked 1


INT_TIMER1 [11] 0 = Service available, 1 = Masked 1


INT_TIMER0 [10] 0 = Service available, 1 = Masked 1


INT_WDT_AC97 [9] 0 = Service available, 1 = Masked 1


INT_TICK [8] 0 = Service available, 1 = Masked 1


nBATT_FLT [7] 0 = Service available, 1 = Masked 1


INT_CAM [6] 0 = Service available, 1 = Masked 1


EINT8_23 [5] 0 = Service available, 1 = Masked 1


EINT4_7 [4] 0 = Service available, 1 = Masked 1


EINT3 [3] 0 = Service available, 1 = Masked 1


EINT2 [2] 0 = Service available, 1 = Masked 1


EINT1 [1] 0 = Service available, 1 = Masked 1


EINT0 [0] 0 = Service available, 1 = Masked 1

我们发现INTMSK的第5,6位对应了EINT4_7, EINT8_23,20个外部中断,也就是所,这20个GPIO引脚只能触发这两个中断。


但是当中断到来时,我们如果判断是由哪一个GPIO引脚触发的呢?这个时候我们可以通过查询EINTMASK来判断中断源。


EINTMASK Bit Description


EINT23 [23] 0 = enable interrupt 1= masked


EINT22 [22] 0 = enable interrupt 1= masked


EINT21 [21] 0 = enable interrupt 1= masked


EINT20 [20] 0 = enable interrupt 1= masked


EINT19 [19] 0 = enable interrupt 1= masked


EINT18 [18] 0 = enable interrupt 1= masked


EINT17 [17] 0 = enable interrupt 1= masked


EINT16 [16] 0 = enable interrupt 1= masked


EINT15 [15] 0 = enable interrupt 1= masked


EINT14 [14] 0 = enable interrupt 1= masked


EINT13 [13] 0 = enable interrupt 1= masked


EINT12 [12] 0 = enable interrupt 1= masked


EINT11 [11] 0 = enable interrupt 1= masked


EINT10 [10] 0 = enable interrupt 1= masked


EINT9 [9] 0 = enable interrupt 1= masked


EINT8 [8] 0 = enable interrupt 1= masked


EINT7 [7] 0 = enable interrupt 1= masked


EINT6 [6] 0 = enable interrupt 1= masked


EINT5 [5] 0 = enable interrupt 1= masked


EINT4 [4] 0 = enable interrupt 1= masked


Reserved [3:0] Reserved


但是还有一个疑问,不是说60个中断源吗?除去24个外部中断源应该还有60-24 -(32-6)=10个内部中断源啊。他们在哪呢?

其实这里涉及到了子中断源的概念。


Sub Sources Descriptions Source


INT_AC97 AC97 interrupt             INT_WDT_AC97


INT_WDT Watchdoc interrupt       INT_WDT_AC97


INT_CAM_P P-port capture interrupt in camera interface        INT_CAM


INT_CAM_C C-port capture interrupt in camera interface       INT_CAM


INT_ADC_S ADC interrupt                                                      INT_ADC


INT_TC Touch screen interrupt (pen up/down)                    INT_ADC


INT_ERR2 UART2 error interrupt                                        INT_UART2


INT_TXD2 UART2 transmit interrupt                        INT_UART2


INT_RXD2 UART2 receive interrupt                          INT_UART2


INT_ERR1 UART1 error interrupt                              INT_UART1


INT_TXD1 UART1 transmit interrupt I                        NT_UART1


INT_RXD1 UART1 receive interrupt                           INT_UART1


INT_ERR0 UART0 error interrupt                              INT_UART0


INT_TXD0 UART0 transmit interrupt                         INT_UART0


INT_RXD0 UART0 receive interrupt                          NT_UART0



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107101.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 医院管理数据库课程设计[通俗易懂]

    医院管理数据库课程设计[通俗易懂]文章目录前言医院信息管理系统摘要1.概述运行环境2. 1需求分析2.1.1基本分类需求分析2.1.2主要关系流程分析2.2可行性分析3.1概念结构设计3.1.1抽象出系统的实体3.2设计分E-R图3.3.1全局E-R图4.1逻辑结构设计5.1数据库物理设计与实施6.数据操作要求及实现6.1.1数据查询、更新操作6.1.2实现药品的入库、出库管理;6.1.3实现科室、医生、病人的管理;(1) 逻辑增删改6.1.4实现处方的登记管理6.1.5实现收费管理;6.2视图6.3触发器6.4存储过程..

    2022年5月19日
    51
  • php二次开发知识,Discuz!二次开发基本知识「建议收藏」

    php二次开发知识,Discuz!二次开发基本知识「建议收藏」必须至少具备如下技能:1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳4)熟悉使用Discuz!的各项功能一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。a)Admin:后台管理功能模块b)Api:DZ系统与其它系统之间接…

    2022年5月19日
    34
  • windows下安装MinGW及C++的环境配置

    windows下安装MinGW及C++的环境配置方法一——VS:  使用windows开发神器visiostudio。这种方法比较简单,直接下载一个最新的vs安装就行。不单单是C++,C、C#、VB等都可以开发。方法二——只安装C++编译器:  最常用的免费可用的编译器是GNU的C/C++编译器,为了在Windows上安装GCC,您需要安装MinGW。1.首先去MinGW主页下载最新版本的MinGW: www…

    2022年6月29日
    33
  • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景[通俗易懂]

    互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景[通俗易懂]最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁、读写锁、乐观锁等,不同种类的锁自然适用于不同的场景。如果选择了错误的锁,那么在一些高并发的场景下,可能会降低系统的性能,这样用户体验就会非常差了。所以,为了选择合适的锁,我们不仅需要清楚知道加锁的成本开销有多大,还需要分析业务场景中访问的共享资源的方式,再来还要考虑并发访问共享资源时的冲突概率。

    2022年8月12日
    6
  • pycharm2021.2激活码【中文破解版】

    (pycharm2021.2激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    77
  • linux常用命令 创建文件_linux 删除文件夹命令

    linux常用命令 创建文件_linux 删除文件夹命令1、vivi1.txt会直接创建并打开一个文件1.txt2、touchtouch的作用是更改一个文件或目录的时间。touch2.txt如果2.txt不存在,则创建空文件2.txt3、echo echo“abcd”>3.txt可以直接创建文件3.txt并将abcd写入。4、less、more、cat 三者都是将文件内容输出到标准输出,其中less和mo

    2025年7月15日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号