这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» MCU» 请问这段代码?

共1条 1/1 1 跳转至

请问这段代码?

菜鸟
2005-01-11 07:13:03 打赏

#define OS_CRITICAL_METHOD 2

#if OS_CRITICAL_METHOD == 1 #define OS_ENTER_CRITICAL() asm CLI /* Disable interrupts */ #define OS_EXIT_CRITICAL() asm STI /* Enable interrupts */ #endif

#if OS_CRITICAL_METHOD == 2 #define OS_ENTER_CRITICAL() asm {PUSHF; CLI} /* Disable interrupts */ #define OS_EXIT_CRITICAL() asm POPF /* Enable interrupts */ #endif

#if OS_CRITICAL_METHOD == 3 #define OS_ENTER_CRITICAL() (cpu_sr = OSCPUSaveSR()) /* Disable interrupts */ #define OS_EXIT_CRITICAL() (OSCPURestoreSR(cpu_sr)) /* Enable interrupts */ #endif

很显然,编译程序只会处理8-12行的代码,

为什么开中断只用popf,而不加上sti呢,它是如何工作的?

谢谢!




关键词: 请问 这段 代码 CRITICAL

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]