社区导航

 

搜索
查看: 58|回复: 0
打印 上一主题 下一主题

[资料分享] 低功耗设置MSP430主系统时钟

[复制链接]

6025

TA的帖子

19

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2020-2-7 18:12 | 只看该作者 |只看大图 |倒序浏览 |阅读模式

如何安全的从DCO切换到外部晶体振荡器,这是一个很重要的步骤,因为经过此步骤,可以极大地提高430的处理能力,DCO在内部,可以为cpu提供强劲稳定的时钟

复制代码
#include <msp430x14x.h>

void  main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
   
  volatile unsigned int i;
  P5DIR |=BIT4;//设置P5.4为输出
  P5SEL |=BIT4;//设置片内主系统时钟的输出
 
  //由这段代码设置如何将DCO切换到高频晶体振荡器
  BCSCTL1 &=~XT2OFF;//~0x80
  do
  {
      IFG1 &=~OFIFG;//OFIFG为1表示外部晶体振荡器失效
      for(i = 0xff;i>0;i--);//IFG1是Interrupt Flag 1
  }
  while((IFG1 & OFIFG));//表示振荡器已经起振
  BCSCTL2 |= SELM_2;//#define SELM_2  (0x80)   /* MCLK Source Select 2: XT2CLK/LFXTCLK */
  
  while(1);
 
}
复制代码
 

低功耗模式的设置:

msp430内部有4种低功耗模式,在进入低功耗模式的时候,cpu停止,一般是由外部事件的响应才能唤醒cpu

由于IAR软件比较给力,所以进入低功耗模式的常用格式

比如:

进入低功耗模式2:LPM2;

退出低功耗模式2:LPM2_EXIT;

开启外部中断:_EINT():

关闭外部中断:_DINIT();

430外部中断的模式

复制代码
#include <msp430x14x.h>

 main( void )
{

  BCSCTL1 |=DIVA_2;//(0x20) /* ACLK Divider 2: /4 */
  WDTCTL = WDT_ADLY_1000;//直接将看门狗定时器变成定时器,定时时间是1000毫秒
  IE1 =WDTIE;//打开定时器中断
 
  P2DIR |= BIT3;
 
  while(1)
  {
     unsigned int i;
     _BIS_SR(LPM3_bits +GIE);//进入低功耗模式3,这种时候,cpu停止工作,同时打开总的中断     //_BIS_SR是一个本增函数,
     //_BIS_SR()是一个本增函数,通过本函数可以对寄存器进行直接的操作
    //这句话等价于_EINT();
    // LPM3;
     
     P2OUT &=~BIT3;//相当于把第五位输出0
     for(i = 180000;i>0;i--);//延时
     P2OUT |= BIT3;//p3.5输出1
  }
  
}

#pragma vector =WDT_VECTOR
__interrupt void watchdag_timer(void)
{
    //__BIC_SR_IRQ(LPM3_bits);//从中断中,将低功耗模式退出,将cpu从睡眠模式唤醒
    LPM3_EXIT;//退出低功耗模式
}

0

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

关闭

站长推荐上一条 /3 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( )

GMT+8, 2020-2-7 23:51 , Processed in 0.068866 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表
快乐赛车如何计算6码 快乐赛车平台官网 快乐飞艇人工计划 快乐飞艇怎么买 快乐飞艇怎么玩才能赢 快乐赛车福利彩票 快乐赛车有没有分析的方法 快乐飞艇 江苏快三质合走势图 快乐赛车官方开奖结果