<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > msp430精確測低頻

          msp430精確測低頻

          作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
          //******************************************************************************
          // Date: 2009.8.16
          // Author: xurafreedom
          // Email: freedomxura@gmail.com / mxh20999@163.com
          // Blog: http://xurafreedom.cublog.cn
          // 基本原理:1s定時,在此時間內(nèi)計數(shù)捕獲到的信號上升沿個數(shù),考慮到msp430的中斷優(yōu)先級// 已經(jīng)固定,所以用高優(yōu)先級的Timer_B產(chǎn)生50ms定時,低優(yōu)先級的Timer_A捕獲信號的上升沿
          //******************************************************************************
          #include
          void InitSys();
          unsigned int upflag = 0;
          unsigned int f_50ms = 0;
          /*******************************************
          主函數(shù)
          ********************************************/
          void main(void)
          {
          WDTCTL = WDTPW + WDTHOLD; // Stop WDT
          InitSys(); // MCLK , SMCLK----8M

          //---------------------------------------------------------------------
          //Timer_B的設置,用于產(chǎn)生定時中斷,中斷時間為50000us
          P1DIR |= BIT3; // Set P1.3 to output direction
          TBCCTL0 = CCIE; // TBCCR0 interrupt enabled
          TBCCR0 = 50000;
          TBCTL = TBSSEL_2 + ID_3 + MC_1; // SMCLK,1M, upmode

          //---------------------------------------------------------------------
          //Timer_A的設置,用于捕獲外部信號的邊沿觸發(fā),可以設置為上升沿觸發(fā),或者下降沿觸發(fā)
          P1DIR&=~BIT2;
          P1SEL = BIT2; //==設置P1.2端口為功能模塊使用,即:做捕獲源==
          TACTL = TASSEL_2+TACLR+TAIE+MC1;//==定時器A時鐘信號選擇ACLK,
          CCTL1 = CM_1+SCS+CAP+CCIE; //==輸入上升沿捕獲,CCI0A為捕獲信號源==
          _EINT();
          while(1);
          }
          /*******************************************
          函數(shù)名稱:InitSys
          功 能:初始化時鐘函數(shù)
          參 數(shù):無
          返回值 :無
          ********************************************/
          void InitSys()
          {
          unsigned int i;
          BCSCTL1&=~XT2OFF; //==打開XT2振蕩器==
          do
          {
          IFG1 &= ~OFIFG; //==清除振蕩器失效標志==
          for (i = 0xFF; i > 0; i--); //==延時,等待XT2起振==
          }
          while ((IFG1 & OFIFG) != 0); //==判斷XT2是否起振==
          BCSCTL2 =SELM_2+SELS; //==選擇MCLK、SMCLK為XT2,8M==
          }
          /*******************************************
          函數(shù)名稱:Timer_B
          功 能:定時器B中斷服務子函數(shù),產(chǎn)生50ms定時
          參 數(shù):無
          返回值 :無
          ********************************************/
          // Timer B0 interrupt service routine
          #pragma vector=TIMERB0_VECTOR
          __interrupt void Timer_B (void)
          {
          P1OUT ^= BIT3; // 定時50ms
          f_50ms = upflag;
          upflag = 0;
          }
          /*******************************************
          函數(shù)名稱:Timer_A
          功 能:捕獲待測信號上升沿
          參 數(shù):無
          返回值 :無
          ********************************************/
          #pragma vector=TIMERA1_VECTOR //==定時器A中斷處理==
          __interrupt void Timer_A(void)
          {
          switch(TAIV) //向量查詢
          { case 2: //捕獲中斷
          if(CCTL1&CM0) //捕獲到上升沿
          upflag++;
          break;
          default:
          break;
          }
          }


          關鍵詞: msp430測低

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();