打印
[技术问答]

关于m052开关所有中断的操作

[复制链接]
1259|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 | 只看该作者
我一般好多句子都不懂的,直接是用例程改改。

使用特权

评论回复
5
quray1985| | 2015-3-29 09:17 | 只看该作者
598330983 发表于 2015-3-28 08:45
我一般好多句子都不懂的,直接是用例程改改。

学的详细点的话最好还是句子都懂比较好吧

使用特权

评论回复
6
gaoyang9992006| | 2015-3-29 14:30 | 只看该作者
中央处理系统(central processing system)
CPS:ID,原来是中央处理系统的地址的意思。

使用特权

评论回复
7
datouyuan|  楼主 | 2015-3-31 08:39 | 只看该作者
我最在乎的是M052是否支持这条指令。

使用特权

评论回复
8
john_lee| | 2015-3-31 08:47 | 只看该作者
支持,请查阅 cmsis 头文件的 __disable_irq 函数和 __enable_irq 函数。

使用特权

评论回复
9
datouyuan|  楼主 | 2015-3-31 17:46 | 只看该作者
头文件我知道是支持的,不过我在芯片手册上没看到相关的描述。

使用特权

评论回复
10
戈卫东| | 2015-3-31 20:27 | 只看该作者
一个是NVIC层的中断控制
一个是CORE-CM0层的中断控制

使用特权

评论回复
11
稳稳の幸福| | 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

31

主题

1081

帖子

9

粉丝