MSP430时钟分析

最近开始学习MSP430,在所有单片机学习中,时钟的设置无疑是最基本的一项工作! 尤其对于现在的单片机,外部有低速,高速两种晶振,内部还有PLL的内部时钟源,设置好系统工作的时钟则是工作完美开始的表现。

     我一共用了两种系列的430单片机,MSP430F149和MSP430F437,系列的不同,时钟的设置也略有不同,下面从149的时钟一步一步来说吧!

     在f149中,基础时钟是被叫做basic clock module,

     其一共有三个时钟源:

          一个LFXT1CLK,为低速/高速晶振源,通常接32.768khz,也可以接(400khz~8Mhz)

          一个为XT2CLK,外接标准高速晶振,通常是接8Mhz,也可以接(400khz~8Mhz)      

         还有一个叫DCOCLK,为内部晶振,有RC震荡回路构成。

    在430内部一共有三个时钟系统

        一个为ACLK,通常由LFXT1CLK作为时钟源,可以通过软件控制改时钟的分频系树。     

       一个为MCLK,即Main CLK,一听就知道是主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源选择,

       一个为SMCLK,称作辅助主时钟,也是可以由软件选择时钟源。

 

Basic Clock Module Registers(基础时钟寄存器)

DCO control register                         DCOCTL

Basic clock system control 1              BCSCTL1

Basic clock system control 2              BCSCTL2

SFR interrupt enable register 1           IE1

SFR interrupt flag register 1               IFG1

 

 

DCOCTL寄存器是用来配置DCOCLK的,这里暂且不提

BCSCTL1BCSCTL2 寄存器则显得比较重要,这两个寄存器控制了你整个系统中430的工作时钟系统。

BCSCTL1寄存器:

    7            6     5  4         3        210

XT2OFF    XTS   DIVAx    XT5V   RSELx

 

XT20FF: 用来控制XT2晶振的开启和关闭,置1时关闭,置0时,开启

XTS:      用来选择低速晶体的工作模式(可忽略)

DIVAx:   用来选择ACLK的分频系数

XT5V:      无用

RSELx:   选择电阻(没用过,一般置0)

 

BCSCTL2

7 6            5 4       3        2 1         0

SELMx    DIVMx   SELS   DIVSx    DOCR

 

SELMx:  选择MCLK的时钟源,

00 DCOCLK  

01 DCOCLK  

10 XT2CLK  

11 LFX1CLK

 

DIVMx: MCLK的分频

00 1分频

01 2分频

10 4分频

11 8分频

 

SELS:SMCLK的时钟源,0时为内置DCO,1时为外置高速XT2

DIVSx:SMCLK的分频,同MCLK分频

DCOR:控制频率的电阻是内部还是外部(没用过)

 

实例初始化程序

void Init_CLK(void)

{

   unsigned int i;

   BCSCTL1=0x00;  //XT2开启,LFXTCLK为低频模式,ACLK分频为0

 

  do
  {

      IFG1&=~OFIFG;

     for(i=0x20;i>0;i--);

  }

   while((IFG1&OFIFG)==OFIFG);   //当OSCFault=1 即晶振不起振则等待

 

   BCSCTL2=0X00;

   BCSCTL2|=SELM1;                  //MCLK 时钟为XT2,

   BCSCTL2|=SELS;                    //SMCLK时钟为XT2

}

你可能感兴趣的:(MSP430学习,basic,工作,module,system,ie)