打印
[ZLG-MCU]

IAR怎么用C或内嵌汇编读写PRIMASK(中断标志位)?

[复制链接]
1794|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ATmega32L|  楼主 | 2008-2-17 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ATmega32L|  楼主 | 2008-2-18 13:34 | 只看该作者

看来只能

看来只能: 
uint8 __get_primask(void) 

  asm( 
      "mrs r0,primask  " 
       "bx lr   "    
        ); 
  return 0; 


void __set_primask(uint8 flags) 

  asm( 
      "msr primask,r0  "  
        ); 
}  

使用特权

评论回复
板凳
ATmega32L|  楼主 | 2008-2-18 13:43 | 只看该作者

LM3S临界断宏:

LM3S临界断宏:
#define CRITICAL()
  for(uint8 __flags=CriticalEnter(),__ToDo=1;__ToDo;__ToDo=0,CriticalExit(__flags))

 uint8 __get_primask(void);

 void __set_primask(uint8 flags);

static inline uint8 CriticalEnter(void)

  uint8 flags=__get_primask();
  __disable_interrupt();
  return flags;
}

static inline void CriticalExit(uint8 flags)
{
  __set_primask(flags);
}



使用:
CRITICAL()
{
………………//临界断
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

376

帖子

0

粉丝