S3C2410的外部中断
2008-06-24 15:53
204 查看
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)。
首先,来看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)。
相关文章推荐
- S3C2410的外部中断 [转载]
- S3C2410的外部中断 (转)
- s3c2440-外部中断
- Arduino 外部中断 button 之 按下和释放 完整周期 处理方案
- CC2530 外部中断 提醒
- STM32学习笔记-外部中断
- 【不算奇葩的问题】stm32外部中断一直响应
- 嵌入式开发之外部中断控制
- STM32_外部中断(寄存器版)_笔记
- 51单片机0号与1号外部中断实例
- stm32 外部中断库函数实现全程分析。(转,原作者历时三天,呕心沥血,剖析的很细致)
- STM32自学笔记——外部中断
- STC 外部中断范例
- STM32 外部中断和事件 的区别和理解
- 关于KVM中处理外部中断的处理代码
- C51之外部中断
- STM32外部中断的错误
- STM32-外部中断学习笔记
- stm32 外部中断的使用(含实例)
- 外部中断