S3C2440的中断寄存器:
1.中断分两大类:内部中断和外部中断。
2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。
寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。
EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。
EINTPEND:这个是中断挂起寄存器,清除时要写1,后面还有几个是写1清除。当一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置1。为什么没有EINT0-EINT3,呵呵,看看SRCPND就知道了,里面没有EINT4-EINT23的位子,所以有了EINTPEND。
EINTMASK:这个简单,是屏蔽中断用的,也就是说位为1时,此次中断无效。
3.内部中断。内部中断有8个寄存器,下面逐一来看。
寄存器:SUBSRCPND:当一个中断发生后,那么相应的位会被置1,表示一个中断发生了。
INTSUBMSK:与上一个是一伙的,中断屏蔽寄存器,具体屏蔽什么,自己看手册去吧。
INTMOD:中断的方式。一个中断可以是普通中断,也可以是快中断,在这里设置,但只能有一个快中断。
PRIORITY :优先级寄存器,不说了。
SRCPND :当一个中断发生后,那么相应的位会被置1,表示一个或一类中断发生了。
INTMSK :中断屏蔽寄存器。
INTPND :中断发生后,SRCPND中会有位置1,可能好几个(因为同时可能发生几个中断),这些中断会由优先级仲裁器选出一个最紧迫的,然后吧把INTPND中相应位置1,所以同一时间只有一位是1。也就是说前面的寄存器置1是表示发生了,只有INTPND置1,CPU才会处理。
INTOFFSET :用来表示INTPND中哪一位置1了,好让你查询,普通中断跳转时查询用。清除INTPND、SRCPND时自动清除。
4.各寄存器关系:
下面看图说明:
5.中断过程。
a 如果是不带子中断的内部中断:发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么等待进一步处理。
b 如果是带子中断的内部中断:发生后SUBSRCPND相应位置1,如果没有被INTSUBMSK屏蔽,那么SRCPND相应位置1,等待进一步处理,几个SUBSRCPND可能对应同一个SRCPND,对应表如下:
SRCPND SUBSRCPND
INT_UART0 INT_RXD0,INT_TXD0,INT_ERR0
INT_UART1 INT_RXD1,INT_TXD1,INT_ERR1
INT_UART2 INT_RXD2,INT_TXD2,INT_ERR2
INT_ADC INT_ADC_S, INT_TC
INT_CAM INT_CAM_C, INT_CAM_P
INT_WDT_AC97 INT_WDT, INT_AC97
c 如果是外部中断:EINT0-EINT3发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么等待进一步处理。EINT4-EINT23发生后EINTPEND相应位置1,如果没有被EINTMASK屏蔽,那么SRCPND相应位EINT4-7 或EINT8-23置1,如果没有被INTMSK屏蔽,等待进一步处理,几个EINTPEND对应同一个SRCPND,对应表如下:
SRCPND EINTPEND
EINT0 EINT0
EINT1 EINT1
EINT2 EINT2
EINT3 EINT3
EINT4-7 EINT4-EINT4
EINT8-23 EINT8-EINT23
三种中断都等待进一步处理了。接下来从SRCPND往下看,看INTMSK。如果中断被屏蔽了,就不用说了(注意:快中断也能被屏蔽)。如果没有被屏蔽,那么会进一步到INTMOD。如果是快中断,那么直接出来,进入FIQ(即CPU进入快中断模式处理)。如果是普通中断,那么SRCPND可以有多为置1(FIQ只能有一个),这时就会经过PRIORITY选出一个优先级高的,然后把根据选出的中断把INTPND相应位置1(注意:只能选出一个),进入IRQ,让CPU处理。
6.中断的开启。
a.如果是不带子中断的内部中断,只需设置INTMSK,让它不屏蔽中断就可以了。
b 如果是带子中断的内部中断,需设置INTSUBMSK和INTMSK,让它门不屏蔽中断就可以了。
c 如果是外部中断,对于EINT8-23需要设置EINTMASK和INTMSK。对于EINT0-EINT3只需设置INTMSK。
7.中断的清除。
a.如果是不带子中断的内部中断,只需清除SRCPND,注意清除需位置1。
b 如果是带子中断的内部中断,需清除SRCPND和SUBSRCPND,注意先清除SUBSRCPND,再清除SRCPND。因为,如果你先清除SRCPND的话,然后在清除SUBSRCPND的过程中,SRCPND会以为又有中断发生,又会置1。也就是说一次中断会响应两次。所以必须先掐断源头。
c 如果是外部中断,对于EINT8-23需要清除EINTPEND和SRCPND(同样注意顺序)。对于EINT0-EINT3只需清除SRCPND。深圳专业嵌入式ARM、Linux技术实训,学习顾问:郭老师 QQ754634522
本文详细分析了S3C2440的中断寄存器,相信对arm初学者有一定的帮助
上一篇:ARM嵌入式系统的学习步骤
下一篇:sysfs platform总线
推荐阅读
史海拾趣
FEMA始终将产品质量视为企业的生命线。为了确保产品质量的稳定可靠,公司建立了一套完善的质量管理体系,并引进了先进的生产设备和技术。同时,FEMA还注重员工的培训和素质提升,确保每一个生产环节都能达到最高的质量标准。正是凭借这种对品质的执着追求,FEMA的产品在市场上赢得了良好的口碑和声誉,逐渐成为了行业内的知名品牌。
随着物联网、可穿戴设备等新兴领域的兴起,Goldentech敏锐地捕捉到了市场的新机遇。公司迅速调整战略方向,加大在微型化、低功耗半导体器件的研发投入。通过引入先进的制造工艺和封装技术,Goldentech成功推出了一系列适用于物联网和可穿戴设备的高性能离散半导体产品。这些产品凭借出色的性能和稳定性,在市场中获得了广泛认可,为公司的持续发展注入了新的动力。
Festo公司成立于1925年,由Albert Fezer和Gottlieb Stoll两位创始人共同创立。最初,公司专注于木工机械和木工工具的生产,其品牌Festool在行业内享有盛誉。凭借对工艺的精湛掌握和对品质的严格把控,Festo迅速在木工机械领域崭露头角,为公司的后续发展奠定了坚实的基础。
进入90年代,德力西进入快速发展阶段。1992年,公司引进外资,成立了“中外合资温州德力西电器有限公司”。随后,通过兼并联合和行业整合,德力西不断扩大生产规模和市场影响力。1994年,经有关部门批准,组建了浙江德力西集团公司,成为浙江省首个省级股份合作制电器企业集团。
Blue Creation公司深知人才是企业发展的核心。因此,公司高度重视人才队伍建设,通过校园招聘、社会招聘等多种渠道吸引优秀人才加入。同时,公司还建立了完善的培训体系,为员工提供持续的学习和发展机会。这些举措使得Blue Creation拥有一支高素质、专业化的人才队伍,为公司的快速发展提供了有力保障。
随着移动设备市场的蓬勃发展,Dallas公司敏锐地捕捉到了电池电量管理技术的市场需求。在深入研究和技术攻关后,Dallas成功推出了可编程锂离子电池电量计DS2790。这款产品集成了先进的微控制器、大容量程序和数据存储器以及精密的电池电流、电压和温度测量系统,为定制单节电池电量计的算法提供了优秀的平台。DS2790的推出不仅满足了市场需求,也为Dallas公司在电池管理技术方面赢得了声誉。
SIwave是一个精确的整板级电磁场全波分析工具,它采用三维电磁场全波方法分析整板或整个封装的全波效应。对于真实复杂的PCB板或IC封装,包括多层、任意形状的电源和信号线,SIwave可仿真整个电源和地结构的谐振频率; 为了避免在完成整个设计时产 ...… 查看全部问答∨ |
|
我是学计算机的,现在主要做的是手机功能测试这一块 虽说比较热门,但是感觉没啥技术含量,而且工资也不高 平时比较闲的话,我就学习C语言,而且基础还不错 其他像数据结构的基础也还可以 我想请教一下,如果做嵌入式开发的话(主要是基于unix ...… 查看全部问答∨ |
|
BOOL CMessagesMenuDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically &n ...… 查看全部问答∨ |
|
求证实MTK将下季度发售TD芯片“武松”,展讯的TD叫“Tiger” 本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 “聯發科明年首季將推出雙核心TD-ASCDMA智慧型手機晶片MT6572TD,名稱就為武松(Wu Song),很明顯是用來與展訊的「Tiger」晶片相抗衡. ,由於武松的四大優勢,包括:處理整合和成本優勢、武松為 ...… 查看全部问答∨ |