|
我在购买的开发板上看到所有的外设都是在Oalintr.h中定义自己的逻辑中断,然后再在使能、禁能、完成函数中添加对应的处理语句,最后在ISR函数里面返回这外逻辑中断号,可能做开发板的公司在修改BSP的时候全部用的自定义逻辑中断吧。
-----------------------------
还有一事不明,是关于S3C2410芯片中断管理的,在数据手册中可以看到,所有的设备中断和总线,以及外部中断0-3都有自己的中断位(INTOFFSET中),在发生中断时可以检查INTOFFSET寄存器,看是哪个中断发生了,但是扩展外部中断4-23在INTOFFSET中却没有相应的位,在IO PORT里只有一个EINTSPEND寄存器,在OEMInterruptHandler()中也是用这个寄存器来查看到底是哪个外部扩展中断发生的,但是如果在这个函数里面多个外部扩展中断对应返回一个逻辑中断号时,就需要在自己的程序里面来判断这多个中断中是哪个发生了,这时是不是就得把OEMInterruptHandler()中的清EINTSPEND的语句去除呢,然后在自己的程序里面判断哪个中断发生,最后再自己清中断、或是在中断完成函数OEMIntrruptDone()中清除。
上面的方法证明是可以的,不知道大家是怎么做的。
------------------------------
还有一个问题,我的问题可能多了点,呵呵。
是关于IO PORT的:
在S3C2410中GPF和GPG中包含外部中断的的管脚,那么当我把其中的一个设置成中断模式的时候,他的输入功能还存在吗,这句话看起来可能自相矛盾,不过我看到有的程序是这样做的,先配置成中断模式,然后还会有语句去读其对应的GPFDAT,以检测这个管脚电平的状态,这时的GPFDAT应该是无效的才对啊,怎么还可以去操作呢?
这一点尤其不明,还请各位前辈释疑。 |
|