中易网

_BIS_SR(LPM0_bits+GIE)和_EINT()有什么区别

答案:3  悬赏:60  
解决时间 2021-01-17 16:57
  • 提问者网友:却不属于对方
  • 2021-01-17 06:19
_BIS_SR(LPM0_bits+GIE)和_EINT()有什么区别
最佳答案
  • 二级知识专家网友:大漠
  • 2021-01-17 06:32
_BIS_SR(LPM0_bits+GIE)和_EINT()的区别在于
前者在开启中断之外,还让CPU休眠了。后者则只是开启了中断。


__bis_SR_register(x) 这句话的意思是set SR寄存器中的某些位,也就是让这些功能位使能。

#else 
#define LPM0_bits              (CPUOFF)
#define LPM1_bits              (SCG0+CPUOFF)
#define LPM2_bits              (SCG1+CPUOFF)
#define LPM3_bits              (SCG1+SCG0+CPUOFF)
#define LPM4_bits              (SCG1+SCG0+OSCOFF+CPUOFF)这是库中的定义,显然LPM0_bits让CPU休眠了

GIE则是和__enable_interrupts()等效,使能中断。

#define _EINT()                         __enable_interrupt()EINT()是_enable_interrupts()的宏定义。


如有不懂请追问~
全部回答
  • 1楼网友:封刀令
  • 2021-01-17 07:32
在不同的版本上略有差异,其实你可以这样写BIS_SR(GIE),就能完全规避这个问题
  • 2楼网友:人间朝暮
  • 2021-01-17 07:20
前者同时完成2个设置,进入LPM0模式同时使能全局中断。
后者只是使能了全局中断。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息