首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

s3c2440开发板的按键中断过程中遇到的有关问题,求解释阿

2012-09-28 
s3c2440开发板的按键中断过程中遇到的问题,求解释阿!我的程序是这样的,我在进入中断处理函数的时候把这个

s3c2440开发板的按键中断过程中遇到的问题,求解释阿!
我的程序是这样的,我在进入中断处理函数的时候把这个中断的ID 入队列,然后中断退出,然后在 main 函数这边循环处理队列中的每个中断,先进先出的规则,然后现在的问题是,当我把当前中断的 ID 入队列之后我马上把当前中断的掩码关了,也就是 EINTMASK,INTMSK 这两个中断掩码寄存器的相关位置 1,目的是不想让它退出中断的时候又进入这个中断,无限进入中断,我是想在 main 函数这边把这个中断处理完了再把这个中断的掩码开启。。。可是达不到我要的效果阿,我把掩码关了,中断一退出进入 main 函数的时候就又马上进入中断了。。。我不是已经把掩码关了吗,为什么还会这样阿。。。然后我就尝试着把掩码关了的同时还把未决寄存器也清 0了,也就是 EINTPEND,INTPND 这些寄存器的相关位清 0 ,这样就不会进入中断。。。为啥只关了掩码寄存器的时候会无限进入中断。。。。不懂阿。。。。麻烦前辈指教!!!!小弟在线等啊!!!!

[解决办法]
你没用操作系统,采用裸机运行程序?
2440发生中断后,首先在EINTPEND,或SRCPND、SUBSRCPND上悬挂中断请求标志,如果EINTMASK或INTMSK相应位没有屏蔽掉,则会响应中断,并将INTPND相应位置位。
可见,你置位INTMSK,仅仅是屏蔽中断,而没有清除掉已有的中断请求,所以,你一旦打开INTMSK,原来悬挂的中断标志就重复请求了。
正确的做法是,在退出中断时,清除EINTPEND,INTPND。
[解决办法]
楼上说的对,在退出之前,先把相应的中断标志位清空.可以在手册上写的很清楚...

热点排行