历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2019年11月19日 | 为你破解ARM中断寄存器

2019-11-19 来源:51hei

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初学者有一定的帮助

推荐阅读

史海拾趣

eLED.com Corp公司的发展小趣事

作为一家致力于LED行业的公司,eLED.com Corp深知LED产品对于节能减排的重要性。因此,公司始终将绿色环保理念贯穿于产品的研发、生产和销售过程中。通过采用环保材料和节能技术,eLED.com Corp的产品不仅具有出色的性能,还具备较低的能耗和较长的使用寿命。此外,公司还积极参与各类环保公益活动,推动LED行业向更加绿色、环保的方向发展。

Amphenol Nexus公司的发展小趣事

1998年,Amphenol Nexus Technologies经历了一次重要的领导层更迭。拜尔斯先生退休,弗雷德·法拉哈尼(Fred Farahani)收购了Nexus, Inc.的股份,并与弗拉纳根先生成为合伙人。在Fred的领导下,公司开始关注销售和开发方面的新机遇,产品基础也扩展到包括微型连接器系列。这一变革为公司带来了新的增长点,使其在激烈的市场竞争中保持了领先地位。

Diconex公司的发展小趣事

人才是企业发展的核心动力。Diconex公司高度重视人才培养和引进工作。公司建立了完善的人才培养机制,为员工提供广阔的发展空间和良好的职业晋升通道。同时,公司还积极引进行业优秀人才,为公司的快速发展提供了有力的人才保障。这种人才战略的成功实施使得Diconex在电子行业中拥有了强大的技术团队和人才队伍。

Comair Rotron公司的发展小趣事

随着电子行业的竞争加剧,Comair Rotron意识到单打独斗已难以满足市场需求。因此,公司开始积极寻求与行业内其他企业的合作机会。通过与多家知名电子企业建立战略合作关系,Comair Rotron不仅获得了更多的业务机会,还通过与合作伙伴的技术交流和资源共享,不断提升自身的技术水平和产品质量。

American Power Management Inc公司的发展小趣事

随着电子行业的快速发展,新技术不断涌现,市场竞争也日趋激烈。面对这一变革,APMI及时调整战略,加大研发投入,紧跟技术潮流。公司不仅推出了多款具有竞争力的新产品,还积极拓展新的应用领域,如新能源汽车、物联网等。通过不断创新和拓展,APMI成功应对了行业变革带来的挑战,保持了持续稳健的发展态势。

HP(Keysight)公司的发展小趣事

随着技术的成熟,APMI开始着手市场拓展。公司积极与各大电子制造商合作,为其提供定制的电源管理解决方案。同时,APMI还加大了品牌宣传力度,通过参加行业展会、发布技术白皮书等方式,提高品牌知名度和影响力。凭借卓越的产品性能和完善的售后服务,APMI在市场上赢得了良好的口碑,客户群体不断扩大。

问答坊 | AI 解惑

PSPICE电子线路仿真详细资料!!!

这个十分的精典.... 里面详细介绍了元件模型的建立...以及各电源模型的超详细介绍...最基础的东西... 是国内的ORCAD书中没有介绍的....…

查看全部问答>

博客大赛要开始啦!希望大家多多支持我!为大赛准备,耶!

大家好!我是jxb01033016,我的博客开通啦!希望大家多给我踩踩!!为eeworld博客加油,喝彩!耶! 下面都是我的个人作品哦,希望大家喜欢! 将找工作坚持到底!!!(原创)https://home.eeworld.com.cn/?uid-445-action-viewspace-itemid-9022 ...…

查看全部问答>

绝版路由器演示程序

绝版路由器演示程序…

查看全部问答>

LED驱动隔离式低成本延长LED寿命方案-省电解电容

隔离式LED驱动低成本方案正在研究中,预计今年6月出炉,届时将有省却电解电容方案;并可延长LED电源寿命 此帖光注于此方案的时刻进展中。。。 有知道此消息的回复一下;…

查看全部问答>

中颖单片机在PROTUES中仿真

    中颖单片机在PROTUES中仿真时,找不到相应的 元件,怎么办,会不会像protel中可自创元件库呢?     如何在PROTUES中建自己的元件库?请大虾们指点!!!!…

查看全部问答>

J-Link LoadImage是老是提示 Write Memory error @ address 0x600CAB88

Write Memory error @ address 0x600CAB88, word access: Memory access timeout. 大家帮忙下啊,都快被这个搞死人了,调试不了。…

查看全部问答>

PNG双缓冲问题,为什么我的图片不能显示呢??

int width= dstRc.right-dstRc.left,                                         heigth = dstRc.top-dstRc.bottom;       ...…

查看全部问答>

已有.mms文件,如果通过GPRS模块发出去呢?

看了网上的文章,找了nowsms软件,已经生成了.MMS文件,就是MMS的PDU,上传到手机后可以通过手机可以发送出去 那么,怎么通过GPRS模块发送呢? 我用sim300模块的cipsend命令,在.MMS文件数据前加了如下的POST信息 POST mmsc.monternet.com HTTP1 ...…

查看全部问答>

关于单片机红外传输

最近在搞山东省电子设计大赛,遇到需要使用红外的题目,但是自己不懂,没用过。。。 所以向大家求助: 求助51单片机红外发射和接收的电路图!  …

查看全部问答>