硬汉嵌入式论坛

 找回密码
 立即注册
查看: 399|回复: 1
收起左侧

[开发工具] KEIL MDK5 内嵌汇编报错

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2023-7-20 16:12:03 | 显示全部楼层 |阅读模式
inline int disable_irq(void) {
        int primask;
        __asm volatile("mrs %0, PRIMASK\n"
                                "cpsid i\n" : "=r"(primask));
        return primask & 1;
}
就是上面这段代码,在编译时报错,也不懂汇编,不知道是哪里的事情?..\src\util.c(32): error:  #18: expected a ")"                                  "cpsid i\n" : "=r"(primask));

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2023-7-20 16:56:27 | 显示全部楼层
AC5:
[C] 纯文本查看 复制代码
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
{
  register uint32_t __regPriMask         __ASM("primask");
  __regPriMask = (priMask);
}


AC6:

[C] 纯文本查看 复制代码
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 00:37 , Processed in 0.180765 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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