TI中文支持网
TI专业的中文技术问题搜集分享网站

关于低功耗和CPU休眠的疑问

您好:我在使用430F149的芯片时,写了一段代码,void main()

{

  WDTCTL=WDTPW+WDTHOLD;

  .

 .

_EINT();

LPM0;    

}

#pragma vector=TIMERA0_VECTOR

__interrupt void  xx(void)

{

 P2OUT^=0XFF;

}

大体就是这样,我的意思就是,我在main函数里面,设置了进入低功耗模式0,然后由定时器触发中断函数,然后进入中断里面执行里面的代码,但是我疑惑的就是在中断里面我没有让CPU退出低功耗模式0呀,意思就是CPU还在休眠,只不过有SMCLK作为时钟信号输入的,为什么它还能执行里面的代码?中断函数里面的代码“异或”逻辑运算难道不用CPU去执行吗?是不是执行中断函数的时候不用CPU也能处理,但是又讲不通呀,所有的逻辑以及数值运算它都得经过CPU处理呀?这就是我的疑问,麻烦您帮我解答。十分感谢!

Young Hu:

SMCLK是作为TimerA的时钟信号? 在LPM0下,CPU和MCLK是disable的,但是SMCLK和ACLK是使能的。在main函数中,有TimerA的初始化,所以就设定了TimerA的工作方式。在CPU休眠的时候,TimerA还是工作的,代码是不执行的!

JSW-PengBo:

回复 Young Hu:

中断发生后唤醒了CPU

mico mico:

回复 JSW-PengBo:

谢谢你们的回答,是不是在进入中断后会强制性唤醒CPU执行中断里面的代码?执行完之后在继续让CPU保持之前的状态????

Young Hu:

回复 mico mico:

进入中断程序后,PC和SR会保存在堆栈中,CPUOFF,SCG1,OSCOFF等位自动置为0,CPU就会被唤醒。

可以在while循环中,加入LPM0;

建议你看一下User's Guide的第二章,会很清楚的!

Peter_Zheng:

回复 Young Hu:

timer 在lpm0下能够响应中断,响应中断后唤醒cpu执行中断断码,然后再进入lpm0

赞(0)
未经允许不得转载:TI中文支持网 » 关于低功耗和CPU休眠的疑问
分享到: 更多 (0)