3766|3

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

经典:MSP430单片机进入低功耗模式程序代码 [复制链接]

进入低功耗的方法:
#include "msp430x42x.h"
void main( void )
{
  WDTCTL=WDTPW+WDTHOLD;  //停止看门狗
  FLL_CTL0|=XCAP18PF;          //配置晶振负载电容
  P1DIR |= BIT0+BIT1+BIT2+BIT3+BIT4;
  P2DIR |= BIT0+BIT1+BIT2+BIT3;             //悬空不用的IO口要置为输出
  P1OUT = 0;                                //否则不确定电平会造成IO耗电
  P2OUT = 0;
  BTCTL = BT_fCLK2_DIV256;//BasicTimer设为1/128秒中断
  IE2 |= BTIE;            // 允许BasicTimer中断
  _EINT();                // 允许总中断
  LPM3;                   // 进入低功耗模式3,等待被唤醒
  //程序永远不会执行到这里
}


#pragma vector = BASICTIMER_VECTOR
__interrupt void BT_ISR(void)   // 1/128秒一次中断(由BasicTimer所产生)
{
  if((P1IN & BIT5)==0) P2OUT |= BIT0;
  else                 P2OUT &=~BIT0;
}

最新回复

是的,我一般习惯这样做  详情 回复 发表于 2018-12-29 09:10
 
点赞 关注

回复
举报

6366

帖子

4928

TA的资源

版主

沙发
 
应该加个while(1)为好。
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
tiankai001 发表于 2018-12-25 16:48
应该加个while(1)为好。

while(1)加在_EINT()之后,将LPM3包含在里面是吗?改成下面这样
_EINT();                // 允许总中断
while(1)
{
  LPM3;
}

点评

是的,我一般习惯这样做  详情 回复 发表于 2018-12-29 09:10
 
 
 

回复

6366

帖子

4928

TA的资源

版主

4
 
某蓝色外功心法 发表于 2018-12-28 22:46
while(1)加在_EINT()之后,将LPM3包含在里面是吗?改成下面这样
_EINT();                // 允许总中断 ...

是的,我一般习惯这样做
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表