TI中文支持网
TI专业的中文技术问题搜集分享网站

6713外部中断程序为什么会不断进入

在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,我想应该也能达到你的目的。

赞(0)
未经允许不得转载:TI中文支持网 » 6713外部中断程序为什么会不断进入
分享到: 更多 (0)