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

MSP430时钟分析

发布时间:2020-06-02 发布时间:
|
最近开始学习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的,这里暂且不提
BCSCTL1 与BCSCTL2 寄存器则显得比较重要,这两个寄存器控制了你整个系统中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
}
 

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

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题