打印

有关MSP430低功耗程序设计的问题

[复制链接]
1922|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenhuizai210|  楼主 | 2012-4-10 19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做MSP430的低功耗设计,看了匠人的博客,很有收获。不过还有些问题:
在我看的一本书里面,低功耗是这么做的:
main()
{
    ...
    ...
    for(;;)
    {
         _BIS_SR(LPM3_bits);
         _nop();
     }
}

#pragma vector=PORT1_VECTOR

__interrupt void getKeyValue(void)

{
     P2OUT^=0x01;
}

可以看到,在主程序中,有一个for循环,里面基本上没什么操作。就是进入到低功耗模式。按照我的理解,进入到低功耗模式后,CPU便停在那个地方等待中断,当有中断的时候,进入中断。
我不太明白的是:程序在什么时候唤醒中断?是不是还要有专门的唤醒的函数?还是中断后自动便把CPU唤醒了?
我的理解是,中断发生后,便自动把CPU唤醒。在我以上的程序中,进入中断后对P2.0取反,然后退出中断,回到主程序,但是因为主程序中是一个无限循环for,因此这时候又会再次进入低功耗模式。

还有一个不太明白的是:既然CPU碰到LPM4这样的句子就会停止CPU的话,如果在中断服务函数里写上那个句子,会不会使得CPU始终停留在那个中断服务函数里?

还请各位大神指点指点。

相关帖子

沙发
gaochy1126| | 2012-4-11 10:11 | 只看该作者
中断信号应该就是唤醒信号吧,再说也没有人会在中断程序里面写上睡眠指令的!

使用特权

评论回复
板凳
gaochy1126| | 2012-4-11 10:12 | 只看该作者
你可以通过这个测试一下,想法是否正确的!
{
     P2OUT^=0x01;
    _BIS_SR(LPM3_bits);
         _nop();
P2OUT^=0x01;


}

使用特权

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

本版积分规则

个人签名:用实力赢得尊重!

1

主题

190

帖子

1

粉丝