在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430F5529 番外(二)糾正XT1配置錯誤

      MSP430F5529 番外(二)糾正XT1配置錯誤

      作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
      錯誤更正說明:
      在第三章講UCS時鐘系統(tǒng)的時候,實驗二是將MCLK和ACLK配置為XT1(F5529的XT1為32.768KHZ)
      當(dāng)時的程序如下:
      /*1.配置IO口5.4和5.5為XT1功能。*/
      /*2.配置XCAP為XCAP_3,即12PF的電容。*/
      /*3.清除XT1OFF標志位。*/
      /*4.等待XT1起振。*/
      #include<msp430.h>
      void main(void){
      P1SEL |= BIT0;
      P1DIR |= BIT0;//測量ACLK用
      P2SEL |= BIT2;
      P2DIR |= BIT2;//測量SMCLK用
      P7SEL |= BIT7;
      P7DIR |= BIT7;//測量MCLK用
      P5SEL |= BIT4|BIT5; //配置為XT1功能,電路板上晶振接于這兩腳
      UCSCTL6 |= XCAP_3;//配置電容為12pF
      UCSCTL6 &= ~XT1OFF; //使能XT1
      /*下面是很重要的一步:*/
      /* XT1剛剛起振的時候可能有錯誤,導(dǎo)致時鐘錯誤標志位置位,必須先清零*/
      /*OFIFG即Osc Fault Flag,位于SFRIFG1中*/
      while(SFRIFG1 & OFIFG) //如果有時鐘錯誤{
      UCSCTL7 &=~(XT2OFFG+DCOFFG+XT1LFOFFG);//清除3種時鐘錯誤標志
      SFRIFG1&=~(OFIFG);//清除時鐘錯誤標志位}
      UCSCTL4&=(UCSCTL4&(~(SELA_7|SELM_7)))|SELA_0|SELM_0;
      //將SMCLK和MCLK時鐘源配置為XT1
      }
      當(dāng)時由于手里沒有頻率計,并沒有測輸出。
      昨天實際測了一下,發(fā)現(xiàn)該程序存在問題:實際測量MCLK為876KHZ左右,ACLK雖然是32.768KHZ,但我感覺還是內(nèi)部的REFO。
      解答如下:這是官方的例程

      ACLK = SMCLK = MCLK =XT1 =32768

      本文引用地址:http://www.biyoush.com/article/201611/322795.htm

      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的,所以用或賦值的話會出錯。

      默認值請看下表:



      關(guān)鍵詞: MSP430F5529XT1配置錯

      評論


      技術(shù)專區(qū)

      關(guān)閉