打印
[ZLG-MCU]

LM3S xxx 如何实现 CLI

[复制链接]
2703|13
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zlgmcu| | 2008-2-29 09:33 | 只看该作者

CLI、SEI是什么?

你指的会不会是CPSIE(使能处理器中断)和CPSID(禁止处理器中断)指令?
以下两个《Stellaris驱动库》函数,可实现这两条指令的功能:
void IntMasterEnable(void);
void IntMasterDisable(void);

(zlgmcu_wdx)

使用特权

评论回复
板凳
AIRWILL|  楼主 | 2008-3-1 09:48 | 只看该作者

谢谢

查询了执行代码,就一条指令

CPSID  I    (就是cli)
CPSIE  I    (就是sei)

使用特权

评论回复
地板
ATmega32L| | 2008-3-1 15:50 | 只看该作者

如果是IAR

#include <intrinsics.h>

#define sei() __enable_interrupt()
#define cli() __disable_interrupt()

使用特权

评论回复
5
hotpower| | 2008-3-1 16:27 | 只看该作者

哈哈~~~intrinsics.h本身就有__enable_interrupt()

何必老忘不了AVR的sei()和cli()~~~

哈哈~~~sei()和cli()一看都是AVR的人~~~

使用特权

评论回复
6
AIRWILL|  楼主 | 2008-3-4 22:05 | 只看该作者

有点不爽的地方

好象不能嵌入到代码中, 这SEI,CLI 这么简单的操作也要调用函数来完成.

还有对这两条指令不太理解.

CPSID  I    (就是cli)
CPSIE  I    (就是sei)

使用特权

评论回复
7
ATmega32L| | 2008-3-5 12:00 | 只看该作者

sir(),cli()方便。

__enable_interrupt()
__disable_interrupt()
CPUcpsie()
CPUcpsid()

没sei(),cli()方便。

使用特权

评论回复
8
hotpower| | 2008-3-6 15:34 | 只看该作者

倒塌了~~~非要在IAR上想着WINAVR的写法实在是晕呀~~~

使用特权

评论回复
9
AIRWILL|  楼主 | 2008-3-9 09:52 | 只看该作者

楼上别倒塌

  您也是非常追求代码高效的发烧级人物.

就简单的这么一个要求, 也非得要执行一个子程序调用, 不爽吧? 

使用特权

评论回复
10
ATmega32L| | 2008-3-9 12:11 | 只看该作者

编译器不傻

内嵌汇编,内联函数,本征函数调用不会有调用函数开销。

编译器不傻,cli(),sei()编译出来代码只有一条指令。

使用特权

评论回复
11
xwj| | 2008-3-9 13:30 | 只看该作者

呵呵,sei()和cli()打字少啊

其实
主要还是LZ用惯了AVR,别的就找不到关键字了:-)

换个平台的话要多翻翻它们的头文件哦

使用特权

评论回复
12
hotpower| | 2008-3-9 15:52 | 只看该作者

晕呀~~~

使用特权

评论回复
13
ATmega32L| | 2008-3-9 16:41 | 只看该作者

IAR EWARM4.42A有一个BUG

IAR EWARM4.42A有一个BUG,

就是用软件仿真,显示开中断汇编指令是cpsid i,
而关中断是cpsie i.(只是显示错误,实际指令仍然是正确的)

使用特权

评论回复
14
hotpower| | 2008-3-9 16:45 | 只看该作者

哈哈~~~真没注意~~~

使用特权

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

本版积分规则

556

主题

17724

帖子

884

粉丝