您的位置 首页 ADAS

S3C2410外部中止

S3C2410有24个外部中断引脚:EINT0~EINT23,但是对于EINT0~EINT3这4个外部中断而言,使用比较简单;对于其它20个而言,使用稍稍复杂一些。…

S3C2410有24个外部中止引脚:EINT0~EINT23,可是关于EINT0~EINT3这4个外部中止而言,运用比较简单;关于其它20个而言,运用稍稍杂乱一些。

首要,来看S3C2410的中止控制器,有6个中止判决器分为2级,第1级5个,第2级1个;第1级的5个判决器办理32级中止源,在这32级中止源中有2个保存,24级是给内部中止源的,关于24个外部中止只给了6个中止级:EINT0、EINT1、EINT2、EINT3、EINT4~7、EINT8~23,EINT4~EINT7同享一个中止级,EINT8~EINT23同享一个中止级。

中止控制器中首要的相关寄存器有:INTMSK、SRCPND、PRIORITY、INTPND,还有一个INTMOD。可是关于外部中止还有几个寄存器:EXTINTn、EINTMSK、EINTPEND等。

关于外部中止EINT0~EINT3因为没有同享,因而外部寄存器中只要EXTINT0和它们有关,进行中止触发电平信号的设置。

可是关于其他的20个外部中止而言,一切上面说到的寄存器都有联系。实际上关于EINT4~EINT23,实际上能够看作有3级屏蔽,第1级屏蔽是CPSR中的I-Bit和F-Bit,第2级屏蔽是EINTMASK([4:23]每一位对应一个相应的外部中止),第3级屏蔽是INTMSK(Bit4、Bit5);关于EINT0~EINT3而言,仅仅INTMSK中的Bit0~Bit3,因而在变成初始化时应该要特别留意。

在外部中止有中止请求时,因为EINT4~7、EINT8~23别离同享中止,因而在SRCPND中别离对应Bit4、Bit5,终究导致INTPND中的相应方位1(在任何时刻只能有一个方位1),可是怎么分辩这些同享的中止?能够经过查询EINTPEND来进行(Bit4~Bit23别离对应1个外部中止)。因为在相应中止后在服务例程中应将挂起寄存器中相应的位清0来铲除未处理状况,因而关于EINT4~7、EINT8~23这20个外部中止的铲除挂起寄存器的次序是:

1. EINTPEND(或许多位搭档为1),办法:向要清0的位写1,其它位写0,但要留意因为第4位保存,因而不要企图向第4位写1,或许会导致不行意料的成果。

2.SRCPND(或许多位一起为1),办法:向要清0的位写1,其它位写0。

3.INTPND,办法:向其写自身的数据(即INTPND=INTPND)。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部