[技术问答] 关于m052开关所有中断的操作

[复制链接]
1625|10
 楼主| datouyuan 发表于 2015-3-27 17:28 | 显示全部楼层 |阅读模式
我用m052替换51单片机时,因为在m052的datasheet中一直找不到关于开关所有中断(类似51的EA标志位)的描述。
所以我移植时,用一个全局变量u32INT来做暂存,用这种方法已经改了好几个产品了。

u32INT=NVIC->ICER[0];
NVIC->ICER[0] = 0xffffffff; /* disable interrupt */

NVIC->ISER[0] = u32INT;         /* enable interrupt */

今天无意中在core_cmo.h发现有下列一段代码:
static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
static __INLINE void __disable_irq()              { __ASM volatile ("cpsid i"); }

m052支持这样操作吗?假如支持,datasheet中为什么会没有关于PRIMASK寄存器的描述?


598330983 发表于 2015-3-28 08:44 | 显示全部楼层
PRIMASK这个你参考头文件,看看头文件怎么描述的。
598330983 发表于 2015-3-28 08:45 | 显示全部楼层
我觉得最好参考例子,一般库函数包里有例子,然后按照人家的那种格式做。
598330983 发表于 2015-3-28 08:45 | 显示全部楼层
我一般好多句子都不懂的,直接是用例程改改。
quray1985 发表于 2015-3-29 09:17 | 显示全部楼层
598330983 发表于 2015-3-28 08:45
我一般好多句子都不懂的,直接是用例程改改。

学的详细点的话最好还是句子都懂比较好吧
gaoyang9992006 发表于 2015-3-29 14:30 | 显示全部楼层
中央处理系统(central processing system)
CPS:ID,原来是中央处理系统的地址的意思。
 楼主| datouyuan 发表于 2015-3-31 08:39 | 显示全部楼层
我最在乎的是M052是否支持这条指令。
john_lee 发表于 2015-3-31 08:47 | 显示全部楼层
支持,请查阅 cmsis 头文件的 __disable_irq 函数和 __enable_irq 函数。
 楼主| datouyuan 发表于 2015-3-31 17:46 | 显示全部楼层
头文件我知道是支持的,不过我在芯片手册上没看到相关的描述。
戈卫东 发表于 2015-3-31 20:27 | 显示全部楼层
一个是NVIC层的中断控制
一个是CORE-CM0层的中断控制
稳稳の幸福 发表于 2015-4-3 15:42 | 显示全部楼层
static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
static __INLINE void __disable_irq()              { __ASM volatile ("cpsid i"); }
这个魔法是用的汇编?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:maowenyuan@126.com

32

主题

1094

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部