This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5529时钟设置



目的:将ACLK、MCLK配置为XT132.768KHZ。

但是:实际测量MCLK为876KHZ左右,ACLK虽然是32.768KHZ,但我感觉还是内部的REFO。

请问是不是我的设置有什么问题啊

#include <msp430.h>
void main(void)
{

   P1SEL |= BIT0;
   P1DIR |= BIT0;//测量ACLK用
   P2SEL |= BIT2;
   P2DIR |= BIT2;//测量SMCLK用
   P7SEL |= BIT7;
   P7DIR |= BIT7;//测量MCLK用

   P5SEL |= BIT4|BIT5; //将IO配置为XT1功能,电路板上晶振接于这两脚
   UCSCTL6 |= XCAP_3;  //配置电容为12pF
   UCSCTL6 &= ~XT1OFF; //使能XT1

while(SFRIFG1 & OFIFG)  //如果有时钟错误
{
 UCSCTL7 &=~(XT2OFFG+DCOFFG+XT1LFOFFG);//清除3种时钟错误标志
 SFRIFG1&=~(OFIFG);//清除时钟错误标志位
}
UCSCTL4&=(UCSCTL4&(~(SELA_7|SELM_7)))|SELS_0|SELM__XT1CLK|SELA_0;//将ACLK和MCLK时钟源配置为XT1
}

  •  你好,如下程序供参考,ACLK = SMCLK = MCLK =XT1 =32768

    int main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

    P1DIR |= BIT0; // ACLK set out to pins
    P1SEL |= BIT0;
    P2DIR |= BIT2; // SMCLK set out to pins
    P2SEL |= BIT2;
    P7DIR |= BIT7; // MCLK set out to pins
    P7SEL |= BIT7;

    P5SEL |= BIT4+BIT5; // Select XT1

    UCSCTL6 &= ~(XT1OFF); // XT1 On
    UCSCTL6 |= XCAP_3; // Internal load cap
    UCSCTL3 = 0; // FLL Reference Clock = XT1

    // Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
    do
    {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
    // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG; // Clear fault flags
    }while (SFRIFG1&OFIFG); // Test oscillator fault flag

    UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength

    UCSCTL4 = SELA_0 + SELS_0 + SELM_0; // SMCLK = MCLK = ACLK = LFTX1 

    }

    注意划红线的语句,要用等号赋值。因为默认 SELS 和SELM的值是不为0的,所以用或赋值的话会出错。