关于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



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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 使用idea进行activiti工作流开发[通俗易懂]

    使用idea进行activiti工作流开发[通俗易懂]使用idea进行activiti工作流开发emmm…….因为工作需要,所以要学习activiti工作流,初次学习,写个博客记录一下,下次再用就知道大概流程了。1、安装插件在idea里面,activiti的插件叫actiBPM,在插件库里面把它安装好,重启idea就行了。2、新建一个maven项目,并更改pom.xml。pom中依赖如下:<dependen…

  • git需要安装吗(git与gitlab的区别)

    git需要安装吗(git与gitlab的区别)git和github的区别及安装1.什么是Git,与Github的关系(1)Git的定义(2)Github是什么(3)Git和Github的关系2.Git的安装(1)Windows系统上的安装(2)Linux系统上的安装(部分,参考[git官网](https://git-scm.com/download/linux”DownloadforLinu…

  • app制作好后怎么上线_app如何上线到应用市场

    app制作好后怎么上线_app如何上线到应用市场自己开发一款APP上线前的步骤问题额,是这样的,一款App想要上线的话,是不需要跟国家部分打交道的。你需要的是和其他公司去打交道。比如说苹果的App,你想在APPstr上线的话,首先你要有一个开发者账号。这个账号是直接跟美国苹果公司申请的,费用是99美元一年。申请的时间大约是一个月左右。账号下来了之后,就可以上传安装包,苹果公司会审核这款App,值得一提的是,苹果公司的审核机制很严格,审核的时间…

    2022年10月30日
  • SA-SSD训练过程出现nan

    SA-SSD训练过程出现nan

  • 51单片机最小系统电路图_51单片机最小系统介绍

    51单片机最小系统电路图_51单片机最小系统介绍单片机最小系统包括单片机,电源电路,晶振电路和复位电路。电源电路:目前主流单片机的电源分为5V和3.3V这两个标准,STC89C51需要5V的供电系统。晶振电路:晶振为11.0592MHz(可以准确得到波特率9600和115200),为单片机系统提供基准时钟信号,电容(C2、C3)的作用是帮助无源晶振起振,并维持振荡信号的稳定。复位电路:为了防止程序跑飞,当芯片工作异常时,可以按下复位键重新启动。复位电路分为高电平复位和低电平复位,89C51是高电平复位。在单片机系统中,系统上电启动的时候复位一.

  • Bug驱动开发(Bug-driven development)

    Bug驱动开发(Bug-driven development)

发表回复

您的电子邮箱地址不会被公开。

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