shuimubai 发表于 2014-10-16 14:11:05

求教傻孩子

//! \brief The safe ATOM code section macro
# define SAFE_ATOM_CODE(...)   {\
      istate_t tState = GET_GLOBAL_INTERRUPT_STATE();\
      DISABLE_GLOBAL_INTERRUPT();\
      __VA_ARGS__;\
      SET_GLOBAL_INTERRUPT_STATE(tState);\
    }

//! \brief Exit from the safe atom operations
# define EXIT_SAFE_ATOM_CODE()          SET_GLOBAL_INTERRUPT_STATE(tState);

//! \brief ATOM code section macro
# define ATOM_CODE(...)      {\
                DISABLE_GLOBAL_INTERRUPT();\
                __VA_ARGS__;\
                ENABLE_GLOBAL_INTERRUPT();\
            }

//! \brief Exit from the atom operations
# define EXIT_ATOM_CODE()   ENABLE_GLOBAL_INTERRUPT();


SAFE_ATOM_CODE和 ATOM_CODE的使用场合有什么区别吗?

Gorgon_Meducer 发表于 2014-10-16 14:44:20

ATOM_CODE会无条件的打开全局中断响应。很多场合你不想这样对吧?

shuimubai 发表于 2014-10-19 21:26:08

istate_t tState = GET_GLOBAL_INTERRUPT_STATE();
这个函数在Keil中如何实现呢?IAR中是提供获取中断状态的函数的__ATTRIBUTES __istate_t __get_interrupt_state(void);

Gorgon_Meducer 发表于 2014-10-23 23:09:25

shuimubai 发表于 2014-10-19 21:26
istate_t tState = GET_GLOBAL_INTERRUPT_STATE();
这个函数在Keil中如何实现呢?IAR中是提供获取中断状态 ...

我也不知道,因为还没有实质性的对'MDK进行支持
页: [1]
查看完整版本: 求教傻孩子