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

请教怎么清除中断请求?

2012-03-22 
请问如何清除中断请求??如题。我知道注册了中断号以后,用InterruptDone(中断号)可以清除对应的中断请求并且

请问如何清除中断请求??
如题。
我知道注册了中断号以后,用InterruptDone(中断号)可以清除对应的中断请求并且使能中断,但这里我想在别的地方直接操作中断寄存器把中断请求清掉,而不想申请中断号然后用InterruptDone。
我是在某些条件下想要撤销EINT0的中断操作。
我试了这样:SRCPND1 |= 0x1; INTPND1 |= 0x1;
结果无效。
想请教一下应该怎样解决??
谢谢

[解决办法]
你这样是不行的,必须通过InterruptDone。InterruptDone是告诉操作系统中断处理已经完成,从而使操作系统能够准备处理其他的中断。你单单清除中断寄存器是不行的
[解决办法]
你从什么什么地方,引进的中断输入信号了。还有就是中断控制寄存器当中不是有个使能寄存器,这个应该可以控制的!可以试试看看,个人观点,可能不对!
[解决办法]

探讨
那我在A.cpp文件里申请了EINT0的中断号,在B.cpp文件里也要用InterruptDone清除EINT0请求的话,也要重新申请中断号吗??

如果不用的话,那我怎么获取在A.cpp文件里申请过的中断号呢??
(我的文件执行顺序是先B文件,再A文件,A文件代码负责处理中断事件。我想在某些时候在B文件里把EINT0请求清掉,不让它在A文件里处理EINT0中断)

谢谢

[解决办法]
两个文件的东西,情况比较复杂吧,也许是你设定的变量因为缓冲的关系,都没有被中断更新。试试把外部中断寄存器也设置一下。

s2440IOP->rEINTMASK |= 0x4000;
s2440IOP->rEINTPEND = 0x4000;
s2440INT->rSRCPND = BIT_EINT8_23;
if (s2440INT->rINTPND & BIT_EINT8_23) 
s2440INT->rINTPND = BIT_EINT8_23;
上面的是我清理EINT14的

热点排行