在TI的实例代码中,找到两个函数__enable_interrupt()和__bis_SR_register(GIE),注释说的都是使能全局中断,这两个函数有区别吗?感觉__enable_interrupt()似乎容易出问题
xyz549040622:
__enable_interrupt()比较专一,只是开中断。而_bis_SR_register可带参数,可以置位SR中的其他位。
HG:
功能上是一样的。你看一下反汇编,都是 BIS #8,SR。
主要的区别 __bis_SR_register()除了设置GIE参数外还能传些别的,__enable_interrupt() 只能set GIE。
同理 __disable_interrupt(); DINT; and bic_SR_register(GIE);
m:
回复 HG:
但是我有个程序,使用,__enable_interrupt() 程序不能进中断,但是改成__bis_SR_register(GIE)就没问题了(其他的都没改),这是为什么?
xyz549040622:
回复 m:
看看汇编,是不是两者操作的一样,不应该呀。
灰小子:
回复 xyz549040622:
这种宏定义和编译环境有关系,__enable_interrupt()一般在iar上用