s3c2410外部中断-皇冠最新app版本

×
嵌入式 > 嵌入式开发 > 详情

s3c2410外部中断

发布时间:2026-07-08 发布时间:
|
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)。



『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』

网站地图