打印

_EINT()和 _BIS_SR()

[复制链接]
1223|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FireRiver9|  楼主 | 2016-2-29 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    _EINT();和  _BIS_SR(LPM0_bits + GIE);   什么区别,程序中用到 _EINT()就正常,用后者就不行,怎么回事,怎么做到一致

相关帖子

沙发
尤彼卡| | 2016-2-29 20:55 | 只看该作者
在不同的版本上略有差异,其实你可以这样写BIS_SR(GIE),就能完全规避这个问题

使用特权

评论回复
板凳
可可球| | 2016-2-29 21:04 | 只看该作者
前者同时完成2个设置,进入LPM0模式同时使能全局中断。
后者只是使能了全局中断。

使用特权

评论回复
地板
309030106| | 2016-2-29 21:14 | 只看该作者
#define _EINT()        __enable_interrupt()
__intrinsic unsigned short _BIS_SR_IRQ(unsigned short);
应该在头文件定义的

使用特权

评论回复
5
lefeng| | 2016-2-29 21:55 | 只看该作者
BIS_SR用于对寄存器数值进行操作,该函数其实是一个宏定义,在in430.h头文件中可以找到这个宏定义,如下:#define _BIS_SR(x)   _bis_SR_register(x)。

使用特权

评论回复
6
yiyigirl2014| | 2016-2-29 22:25 | 只看该作者
第一个是使能总中断的函数。第二个是进入低功耗的设置。不是一码事啊。

使用特权

评论回复
7
上山砍老虎| | 2016-2-29 22:52 | 只看该作者
这两个函数用的确实不少

使用特权

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

本版积分规则

74

主题

673

帖子

0

粉丝