tongshaoqiang的个人空间 https://bbs.21ic.com/?598372 [收藏] [复制] [RSS]

日志

MSP430学习笔记--时钟

已有 742 次阅读2014-12-3 17:06 |系统分类:单片机| 数字控制, 计算机, 控制器, 单片机, 寄存器

单片机可以看成是在时钟驱动下的时序逻辑电路,单片机在工作过程过程中,所有工作都是在时钟信号的控制下进行的,每执行一条指令,CPU的控制器都要发出一系列特定的控制信号。时钟电路是微型计算机的心脏,它控制着计算机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的。

       MSP430f149的时钟可以自由选择,它包括一个内部DCO时钟和另外两个外部时钟。内部时钟频率可设置,其中最高可达到1042KHZ;外部可以接两个时钟,一个可接钟表晶振或标准晶振,另一个接最高时钟频率为8MHZ 的晶振,8M 是单片机的最高工作频率,对于晶振的选择,对基础时钟的控制,只需要对相应的控制寄存器写入相应的控制位就可以产生需要的时钟,还可以从相应的端口测出时钟频率。            

       MSP430F149有3种时钟信号输出,MCLK(主系统时间),SMCLK(子系统时钟),ACLK(辅助系统时钟),来源有所不同。基本时钟框图如下:小q截图-20130708081843.jpg

       上电复位后,MCLK默认是DCO(数字控制振荡器)时钟源,同时默认了大小(大约800K),可以改变寄存器调节时钟频率,也可以根据需要,将MCLK的时钟源另外设置为LFXT1和XT2。

例程1:设置好各时钟并输出,驱动外部芯片或供用户测量。对比用户手册基础时钟寄存器设置和引脚图。

        ACLK = LFXT1 = 32768, MCLK = DCO Max, SMCLK = XT2

#include

void main (void)

{

     WDTCTL=WDTPW+WD THOLD;                //停止关门狗

    DCOCTL=DCO0+DCO1+DCO2;                 //最大DCO

    BCSCTCTL1=RSEL0+RSEL1+RSEL2;     //SMCLK=XT2,最大RSEL

     P5DIR |=0X70;                                               //P5.6,5,4为输出

    P5SEL |=0X70;                     //P5.6,5,4为外围模块用作 ACLK,SMCLK,MCLK的输出

   whlie(1);

   {

   }

}

例程2  设置主时钟MCLK=XT2,从P5.4口输出(P5.4和MCLK复用)。OFIFG(振荡器失效标志)

#include

void main (void)

{

     WDTCTL=WDTPW+WD THOLD;                //停止关门狗

     P5DIR |= 0x10;                                               // P5.4输出

     P5SEL |= 0x10;                                            // P5.4为外围模块用作MCLK的输出
     BCSCTL1 &= ~XT2OFF;                              // XT2有效
  do
  {  
      unsigned int i;
      IFG1 &= ~OFIFG;                                   //清除振荡器失效标志
      for (i = 0xFF; i > 0; i--);                           // 延时,待稳定
  }
       while ((IFG1 & OFIFG));                     // 若振荡器失效标志有效
            BCSCTL2 |= SELM_2;                        // 使MCLK= XT2
             for (;;);                                 
}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)