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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > MSP430F5529 (六)定時器Timer_A-2

          MSP430F5529 (六)定時器Timer_A-2

          作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏


          實驗二:比較模式-增減模式輸出PWM波

          /*在比較和增減模式下產(chǎn)生PWM波(矩形波) */
          /*提一個PWM波的用處:驅(qū)動直流電機。我們知道對于直流電機,驅(qū)動它的電流的頻率并不影響轉(zhuǎn)速 ,只有占空比會影響轉(zhuǎn)速*/
          /*開發(fā)板上P2.0是有外接排針的,所以用這一端口輸出PWM*/
          /*看CPU引腳發(fā)現(xiàn),P2.0為TA1.1,也就是定時器A1的1號捕獲比較器輸出口*/
          #include
          void main(void)
          {
          WDTCTL=WDTPW+WDTHOLD;
          P2SEL|=BIT0; //聲明有特殊功能,不做普通I/O使用
          P2DIR|=BIT0; //輸出
          P2DS |=BIT0; //全力驅(qū)動,否則可能無法驅(qū)動電機
          P2OUT&=~BIT0; //初始化輸出低電平
          /*把SMCL配置為XT2 4MHZ*/
          P5SEL=BIT2+BIT3; //聲明特殊功能,將用作外部時鐘晶振XT2輸入
          UCSCTL6&=~XT2OFF; //開啟XT2
          while(SFRIFG1 & OFIFG)
          {
          UCSCTL7 &=~(XT2OFFG+DCOFFG+XT1LFOFFG);//清除3種時鐘錯誤標志
          SFRIFG1&=~(OFIFG);//清除時鐘錯誤標志位
          } //直到XT2從起振到振蕩正常,沒有錯誤發(fā)生
          UCSCTL4|=SELS_5; //把SMCLK的時鐘源選為XT2 4MHZ
          TA1CCTL0=CCIE; //定時器A1的捕獲比較器0開啟CCIFG位中斷
          TA1CCR0=200; //置入計數(shù)終值,則PWM頻率為10KHZ
          TA1CCTL1=CCIE; //捕獲比較器1開啟中斷
          TA1CCR1=50; //占空比為75%
          TA1CTL|=TACLR; //將計時器A1清零
          TA1CTL|=TASSEL_2+MC_3; //定時器選擇SMCLK作為時鐘源,且為增減模式
          TA1CCTL1=OUTMOD_4; //定時器A1中的捕獲比較器1,輸出模式為4翻轉(zhuǎn)
          while(1);
          }




          //呼吸燈//
          // 介紹: 該程序利用TIMER A 的 UP模式 在P1.3腳產(chǎn)生PWM輸出
          // 將CCR0設(shè)置為1500來定義PWM的周期,利用循環(huán)不斷改變CCR1的值,
          // 實現(xiàn)利用改變PWM的占空比來改變LED亮度.
          // SMCLK = MCLK = TACLK = default DCO
          #include
          void delay_nms(unsigned int n)// 延時函數(shù)
          {
          unsigned int j;
          for (j=0;j<(n);j++)
          {
          __delay_cycles(400); //太短會使LED顯得好像在常亮,太長就要等較長時間來觀察了
          }
          }
          void main(void)
          {
          unsigned const PWMPeriod = 1500; //設(shè)置PWM周期參數(shù),const聲明此值不允許改變.該數(shù)值太大,會導致LED閃爍
          volatile unsigned int i; //聲明變量i是隨時可變的,系統(tǒng)不要去優(yōu)化這個值
          WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門狗
          P1DIR |=BIT3; // 設(shè)置 P1.3為輸出
          P1SEL |=BIT3; // 設(shè)置 P1.3為TA0.2輸出
          TA0CCR0 = PWMPeriod; // 設(shè)置PWM 周期
          TA0CCTL2 = OUTMOD_7; // 設(shè)置PWM 輸出模式為:7 - PWM復位/置位模式,
          // 即輸出電平在TAR的值等于CCR2時復位為0,當TAR的值等于CCR0時置位為1,改變CCR2,從而產(chǎn)生PWM。其實模式2也可以
          TA0CTL= TASSEL_2 +MC_1; // 設(shè)置TIMERA的時鐘源為SMCLK, 計數(shù)模式為up,到CCR0再自動從0開始計數(shù)
          while(1)
          {
          TA0CCR2=0;//確保最開始是暗的
          //漸亮過程:不斷設(shè)置TA0CCR2的值,使翻轉(zhuǎn)的時間變長,改變PWM的占空比
          for(i=0;i {
          TA0CCR2=i;
          delay_nms(4-(i/500)); //占空比變化的延時,調(diào)整延遲時間可改變呼吸燈變暗的速度
          //在暗的時候延長delay時間,可增強效果
          }
          //漸暗過程:不斷設(shè)置TA0CCR2的值,使翻轉(zhuǎn)的時間變短,改變PWM的占空比
          for(i=PWMPeriod;i>0;i-=1)
          {
          TA0CCR2=i;
          delay_nms(4-(i/500)); //占空比變化的延時,調(diào)整延遲時間可改變呼吸燈變暗的速度
          //在暗的時候延長delay時間,可增強效果
          }
          TA0CCR2=0; //確保燈暗
          delay_nms(250); //時間長一點,增強視覺效果
          }
          }

          上一頁 1 2 3 下一頁

          關(guān)鍵詞: MSP430F5529定時器Timer_A-

          評論


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

          關(guān)閉
          看屁屁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); })();