搜索
bottom↓
回复: 7

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

[复制链接]

出0入0汤圆

发表于 2008-2-17 17:59:36 | 显示全部楼层 |阅读模式
Cortex-M3 IAR怎么用C或内嵌汇编读写PRIMASK(中断标志位)?

static inline uint32 __get_primask(void)
{
  uint32 flags=PRIMASK;
  return flags;
}

static inline void __set_primask(uint32 flags)
{
    PRIMASK=flags;
}

出0入8汤圆

发表于 2008-2-17 20:07:10 | 显示全部楼层
同样的问题,你在N个地方发了N次。ST已经回答了你的问题:

原文如下:

在STM32的固件库中,这是用一段汇编实现的

请看STM32F10xFWLib\FWLib\project\EWARM目录下的cortexm3_macro.s文件,其中有两个函数:__SETPRIMASK 和 __RESETPRIMASK

在C程序中只需包含头文件STM32F10xFWLib\FWLib\library\inc\cortexm3_macro.h,即可使用这两个函数。

出0入0汤圆

发表于 2008-2-17 20:18:29 | 显示全部楼层
呵呵!人家心急嘛!
21ic香香很温柔哦

出0入0汤圆

 楼主| 发表于 2008-2-18 13:29:23 | 显示全部楼层
我本意希望用C或者内嵌汇编。


看来只能:
uint8 __get_primask(void)
{
  asm(
      "mrs r0,primask \n\t"
       "bx lr  \n\t"   
        );
  return 0;
}

void __set_primask(uint8 flags)
{
  asm(
      "msr primask,r0 \n\t"
        );
}

出0入0汤圆

 楼主| 发表于 2008-2-18 13:46:54 | 显示全部楼层
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()
{
………………//临界断
}

出0入0汤圆

发表于 2008-2-18 16:15:19 | 显示全部楼层
你去关心这些位干嘛用?

出0入0汤圆

 楼主| 发表于 2008-2-18 16:35:04 | 显示全部楼层
PRIMASK是中断允许标志位,相当于AVR SREG里面的I,当然有用。

出0入0汤圆

发表于 2013-3-20 20:30:23 | 显示全部楼层
路过                                 
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 15:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表