×
嵌入式 > 技术百科 > 详情

MSP430主系统时钟以及430的低功耗设置

发布时间:2020-06-15 发布时间:
|

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

#include


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


 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;//退出低功耗模式

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器