打印

寄存器设置问题

[复制链接]
781|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
G21372|  楼主 | 2013-11-26 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
G21372|  楼主 | 2013-11-26 21:32 | 只看该作者
void Clock_Initial(void){
        WDTCTL = WDTPW + WDTHOLD;
        P2SEL |= BIT2;
        P2DIR |= BIT2;                            // Test SMCLK Output P2.2

        P5SEL |= BIT4 + BIT5;                                           // Port select XT1
        REFCTL0 &= ~REFMSTR;

        UCSCTL6 &= ~(XT1OFF);                     // XT1 On
        UCSCTL6 |= XCAP_3;                        // Internal load cap

        // Loop until XT1 fault flag is cleared
        do
        {
          UCSCTL7 &= ~XT1LFOFFG;                  // Clear XT1 fault flags
        }while (UCSCTL7&XT1LFOFFG);               // Test XT1 fault flag

        // Initialize DCO to 5MHz
        __bis_SR_register(SCG0);                  // Disable the FLL control loop
        UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
        UCSCTL1 = DCORSEL_5;                                          // 2.5MHz - 6MHz
        UCSCTL2 = FLLD_0 + 152;                    // Set DCO Multiplier for 5MHz
                                                  // (N + 1) * FLLRef = Fdco
                                                  // (152 + 1) * 32768 = 5MHz
                                                  // Set FLL Div = fDCOCLK/1
        UCSCTL3 = SELREF_2 + FLLREFDIV_0;                  // Reference of FLL select REFOCLK, fFLLREFCLK/1
        UCSCTL4 = SELA_3 + SELS_3 + SELM_3;                  // SMCLK = ADCLK = MCLK = DCOCLK
        UCSCTL5 = DIVPA_0 + DIVA_0 + DIVS_0 + DIVM_0; //

        __bic_SR_register(SCG0);                  // Enable the FLL control loop

        // 32 x 32 x 5 MHz / 32,768 Hz = 156250 = MCLK cycles for DCO to settle
        __delay_cycles(156250);

        do
        {
           UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);         // Clear XT2,XT1,DCO fault flags
           SFRIFG1 &= ~OFIFG;                                      // Clear fault flags
        }while (SFRIFG1 & OFIFG);                           // Test oscillator fault flag
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

197

主题

1658

帖子

5

粉丝