新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430主系統(tǒng)時鐘以及430的低功耗設置

MSP430主系統(tǒng)時鐘以及430的低功耗設置

作者: 時間:2017-01-12 來源:網絡 收藏

  如何將系統(tǒng)時鐘設置到外部高頻晶體振蕩器,430的MCLK默認的是DCO的,如何安全的從DCO切換到外部晶體振蕩器,這是一個很重要的步驟,因為經過此步驟,可以極大地提高430的處理能力,DCO在內部,可以為cpu提供強勁穩(wěn)定的時鐘

本文引用地址:http://m.butianyuan.cn/article/201701/342830.htm

  #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;//設置片內主系統(tǒng)時鐘的輸出

  //由這段代碼設置如何將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;//退出低功耗模式

  }



關鍵詞: MSP430 低功耗

評論


相關推薦

技術專區(qū)

關閉