微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430 5438时钟系统介绍

MSP430 5438时钟系统介绍

时间:11-25 来源:互联网 点击:

  • 最校此时只有在系统上电电路检测到低点电平或任一请求异步响应中断的外部中断事件时才会从新工作。因此在设计上应含有可能需要用到的外部中断才采用这种模式。否则发生不可预料的结果。 2、LPM3:在DC发生器关闭期间,只有晶振是活动的。但此时设置的基本时序条件的DC发生器的DC电流被关闭。由于此电路的高阻设计,使功耗被抑制。注:当从DC关闭到启动DC0要花一端时间(ns-us) 3、LPM2:在此期间,晶镇振和DC发生器是工作的,所以可实现快速启动。4、LPM1:在此振荡器已经工作,所以不存在启动时间延时问题。结合上述特点,在写程序时要综合考虑低功好耗特性,对外部事件的安排也很重要。你必须在功能实现上综合考虑才能达到你预期的效果。使用C语言可用如下的语句:_BIS_SR(LMP3_bits)和_BIC_SR(LPM3 bits) LPM3和LPM3_EXIT 它们的定义是一样的。这里说明在C语言环境中有些定义的函数是不可见的。但你可以从in430.h文件看到它们的定义。

    DCOCTL DCO控制寄存器

    DCO.2 DCO.1 DCO.0 MOD.4 MOD.3 MOD.2 MOD.1 MOD.0

    DCO.0-DCO.4 定义8种频率之一,可以分段调节DCOCLK频率,相邻两种频率相差10%。而频率由注入直流发生器的电流定义。

    MOD.0-MOD.4 定义在32个DCO周期中插入的Fdco+1周期个数,而在下的DCO周期中为Fdco周期,控制改换DCO和DCO+1选择的两种频率。如果DCO常数为7,表示已经选择最高频率,此时不能利用MOD.0-MOD.4进行频率调整。

    BCSCTL1 基本时钟系统控制寄存器1

    XT2OFF TXS divA.1 divA.0 XT5V Rsel.2 Resl.1 Resl.0

    XT2OFF 控制XT2振荡器的开启与关闭。

    TX2OFF=0,XT2振荡器开启。

    TX2OFF=1,TX2振荡器关闭(默认为TX2关闭)

    XTS 控制LFXT1 工作模式,选择需结合实际晶体振荡器连接情况。

    XTS=0,LFXT1 工作在低频模式(默认)。

    XTS=1,LFXT1 工作在高频模式(必须连接有高频相应的高频时钟源)。

    divA.0 divA.1 控制ACLK分频。

    0 不分频(默认)

    1 2分频

    2 4分频

    3 8分频

    XT5V 此位设置为0。

    Resl1.0,Resl1.1,Resl1.2 三位控制某个内部电阻以决定标称频率。

    Resl=0,选择最低的标称频率。

    ……..

    Resl=7,选择最高的标称频率。

    BCSCTL2 基本时钟系统控制寄存器2

    SELM.1 SELM.0 divM.1 divM.0 SELS divS.1 divS.0 DCOR

    SELM.1 SELM.0 选择MCLK时钟源

    0 时钟源为DCOCLK(默认)

    1 时钟源为DCOCLK

    2 时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X);

    3 时钟源为LFTXTICLK。

    divM.1 divM.0 选择MCLK分频

    0 1分频(默认)

    1 2分频

    2 4 分频

    3 8 分频

    SELS 选择SMCLK时钟源

    0 时钟源为DCOCLK(默认)

    1 时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X)。

    divS.1 divS.0 选择SMCLK分频。

    0 1分频

    1 2分频

    2 4分频

    4 8分频

    DCOR 选择DCO电阻

    0 内部电阻

    1 外部电阻

    PUC信号之后,DCOCLK被自动选择MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或者XT2。设置顺序如下:

    [1] 复位OscOff

    [2] 清除OFIFG

    [3] 延时等待至少50us

    [4] 再次检查OFIFG,如果仍然置位,则重复[3]、[4]步骤,直到OFIFG=0为止。

    例子:

    #include
    void main (void)
    {
    unsigned int i;
    P2DIR = 0x10; //设置P2.4输出
    P2SEL = 0x10; //设置P2.4口为外围模块用作MCLK信号输出
    BCSCTL1 &= ~XT2OFF; //使TX2有效,TX2上电时默认为关闭的.
    do
    {
    IFG1 &= ~OFIFG; //清振荡器失效标志
    for(i= 0xff; i>0; i--); //延时,待稳定.
    }
    while ((IFG1 & OFIFG)!=0); //若振荡器失效标志有效
    BCSCTL2 |= SELM1; //使MCLK = XT2
    for(;;);
    }

  • 上一篇:AVR中断详解
    下一篇:单片机驱动心得

    Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top