您的位置 首页 报告

浅谈S3C2440的中断寄存器及中断过程

S3C2440一共有60个中断源,其中有15个子中断源,它们与SUBSRCPND寄存器中的每一位相对应,其他45个中断源与SRCPND中的每一位相对应。要注意

S3C2440一共有60个中止源,其中有15个子中止源,它们与SUBSRCPND寄存器中的每一位相对应,其他45个中止源与SRCPND中的每一位相对应。要留意的是EINT4~7对应的是同一位SRCPND[4],而EINT8~23对应的也是SRCPND[5]一位。

1 S3C2440的中止寄存器

中止分两大类:外部中止和内部中止。

1.1 外部中止寄存器
24个外部中止占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中止输入,则有必要装备引脚为中止,而且不要上拉。详细可参阅datesheet数据手册。
寄存器:
EXTINT0-EXTINT2:别离设置EINT0—EINT7、EINT8—EINT15、EINT16—EINT23的触发方法(高电平触发、低电平触发、下降沿触发、上升沿触发)。
EINTFLT0-EINTFLT3:操控滤波时钟和滤波宽度。
EINTPEND:这个是中止挂起寄存器,铲除时要写1,后边还有几个是写1铲除。当一个外部中止(EINT4-EINT23)产生后,那么相应的位会被置1。为什么没有EINT0-EINT3,由于它们别离由SRCPND寄存器的后4位操控。
EINTMASK:这个简略,是屏蔽中止用的,也就是说位为1时,此次中止无效。

1.2 内部中止寄存器
内部中止有8个寄存器。
寄存器:
SUBSRCPND:当一个中止产生后,那么相应的位会被置1,表明一个中止产生了。
INTSUBMSK:与上一个是相同的,中止屏蔽寄存器。
SRCPND:当一个中止产生后,那么相应的位会被置1,表明一个或一类中止产生了。
INTMSK:用来屏蔽SRCPND寄存器所标识的中止。但只能屏蔽IRQ中止,不能屏蔽FIQ中止。
INTMOD:当INTMOD中某位被设置为1时,它对应的中止被设为FIQ,CPU将进入快速中止形式。
PRIORITY:用于设置IRQ中止的优先级。详细使用方法可参阅芯片手册。
INTPND:中止优先级裁定器选出优先级最高中止后,这个中止在INTPND寄存器中的相应位被置1,随后,CPU进入中止形式处理它。同一时间内,此寄存器只要一位被置1。
INTOFFSET:用来表明INTPND寄存器中哪位被置1了,即记载INTPND中位[x]为1的位x的值。铲除INTPND、SRCPND时主动铲除。

1.3 各寄存器联系:
图1 各中止寄存器间的联系

2 中止过程

2.1 内部中止过程

a 假如是不带子中止的内部中止:产生后SRCPND相应方位1,假如没有被INTMSK屏蔽,那么等候进一步处理。
b 假如是带子中止的内部中止:产生后SUBSRCPND相应方位1,假如没有被INTSUBMSK屏蔽,那么SRCPND相应方位1,等候进一步处理,几个SUBSRCPND或许对应同一个SRCPND,对应表如下:

2.2 外部中止过程

a 假如是外部中止:EINT0-EINT3产生后SRCPND相应方位1,假如没有被INTMSK屏蔽,那么等候进一步处理。EINT4-EINT23产生后EINTPEND相应方位1,假如没有被EINTMASK屏蔽,那么SRCPND相应位EINT4-7 或EINT8-23置1,假如没有被INTMSK屏蔽,等候进一步处理,几个EINTPEND对应同一个SRCPND,对应表如下:

三种中止都等候进一步处理了。接下来从SRCPND往下看,看INTMSK。假如中止被屏蔽了,就不用说了(留意:快中止也能被屏蔽)。假如没有被屏蔽,那么会进一步到INTMOD。假如是快中止,那么直接出来,进入FIQ(即CPU进入快中止形式处理)。假如是一般中止,那么SRCPND能够有多为置1(FIQ只能有一个),这时就会通过PRIORITY选出一个优先级高的,然后把依据选出的中止把INTPND相应方位1(留意:只能选出一个),进入IRQ,让CPU处理。

2.3 中止的敞开

a.假如是不带子中止的内部中止,只需设置INTMSK,让它不屏蔽中止就能够了。
b 假如是带子中止的内部中止,需设置INTSUBMSK和INTMSK,让它们不屏蔽中止就能够了。
c 假如是外部中止,关于EINT8-23需求设置EINTMASK和INTMSK。关于EINT0-EINT3只需设置INTMSK。

2.4 中止的铲除

a.假如是不带子中止的内部中止,只需铲除SRCPND,留意铲除需方位1。
b 假如是带子中止的内部中止,需铲除SRCPND和SUBSRCPND,留意先铲除SUBSRCPND,再铲除SRCPND。由于,假如你先铲除SRCPND的话,然后在铲除SUBSRCPND的过程中,SRCPND会认为又有中止产生,又会置1。也就是说一次中止会呼应两次。所以有必要先掐断源头。
c 假如是外部中止,关于EINT8-23需求铲除EINTPEND和SRCPND(相同留意次序)。关于EINT0-EINT3只需铲除SRCPND。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/260609.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部