在BIOS 5.41中配置了外部中断,配置中选中userDispatcher,中断程序为:
extern void c_int4(void)
{
IER &= ~(1<<4);//0xFFFFFF0F;//禁止4个外部中断
ICR = 0xFFFFFFFF;//中断清零
a++;
IER &= ~(1<<4);//0xFFFFFF0F;//屏蔽4个外部中断
return;
}
程序的最后外部中断已经禁止,但是为何还能不断重复进入中断程序???
如果不使用BIOS操作系统,直接裸机跑,使用上述中断程序,加上关键字interrupt,则不会重复进入中断!!
这是什么原因????
Denny%20Yang99373:
在中断处理函数里把外部中断关掉试试?
yuexiang huang:
回复 Denny%20Yang99373:
你好,下面这条语句不是已经把外部中断关掉了吗?
IER &= ~(1<<4);//0xFFFFFF0F;//屏蔽第4个外部中断
yuexiang huang:
有没有人遇到相同的情况啊?!?!有牛人能解释吗?
yuexiang huang:
回复 yuexiang huang:
顶顶顶,问题还没有解决
Tony Tang:
回复 yuexiang huang:
你用了BIOS的dispatch,在dispatch中开始部分会对中断IER等先做保存,再调用中断服务程序,从中断服务程序返回再恢复IER,所以你在ISR里做的不起做用了。
因为dispatch是可以用来做嵌套的,所以需要做IER保护这样的操作。
如果不用dispatch,同样是用BIOS,我想应该也能达到你的目的。
TI中文支持网
