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

          新聞中心

          STM32的PWM輸入模式

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          這個(gè)程序用的是PWM輸入模式,該模式是輸入捕獲模式的一個(gè)特例,除了下列區(qū)別外,工作過程序與輸入捕獲模式一樣的。

          2個(gè)ICx信號(hào)映射到同一下TIxl輸入(這里是CH1及CH2)。
          這兩個(gè)ICx信號(hào)都為邊沿有效,但極性相反。

          本文引用地址:http://www.ex-cimer.com/article/201611/322177.htm

          TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
          TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
          TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
          TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
          TIM_ICInitStructure.TIM_ICFilter = 0x0;

          由上面程序可知,TIM2的TIM_Channel_2被配置為上升沿觸發(fā),則TIM2的TIM_Channel_1被配為下降沿觸發(fā)。

          利用此模式能夠測(cè)量輸入到TI1上的PWM信號(hào)的長(zhǎng)度(TIMx_CCR2寄存器)和占空比(TIMx_CCR1)數(shù)值;

          在測(cè)量時(shí),當(dāng)上升沿信號(hào)觸發(fā)后,TIMx_CCR2寄存器開始計(jì)數(shù),當(dāng)下降沿出現(xiàn)時(shí),TIMx_CCR1寄存器也開始計(jì)數(shù)。

          直到下一個(gè)上升沿信號(hào)出現(xiàn)時(shí),在中斷里記下TIM2_CCR1(TIM_GetCapture1(TIM2))及TIM2_CCR2(TIM_GetCapture1(TIM2))的值,然后根據(jù)這兩個(gè)值算出點(diǎn)空比TIM_GetCapture1(TIM2)/2C1Value ,頻率=系統(tǒng)時(shí)鐘/2C1Value 。

          中斷程序如下所示:
          void TIM2_IRQHandler(void)
          {

          TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);


          IC2Value = TIM_GetCapture2(TIM2);

          if (IC2Value != 0)
          {

          DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;


          Frequency = 72000000 / IC2Value;
          }
          else
          {
          DutyCycle = 0;
          Frequency = 0;
          }
          }

          在輸入信號(hào)的每一次上升沿都會(huì)觸發(fā)中斷,在中斷對(duì)IC2Value及IC1Value的值進(jìn)行計(jì)算

          在這個(gè)程序中,TIM2的通道2設(shè)置為上升沿觸發(fā)中斷,TIM2的預(yù)分頻為0,因此可以得到:
          輸入信號(hào)的頻率Frequency = 72000000 / IC2Value;
          輸入信號(hào)的點(diǎn)空比 DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;


          再簡(jiǎn)要解釋一下:不管是用一個(gè)通道還是2個(gè)通道,都是要使用輸入捕獲來實(shí)現(xiàn)測(cè)量脈寬。

          輸入捕獲的意思是,當(dāng)計(jì)數(shù)器不斷地計(jì)數(shù)時(shí),在指定的邊沿到來時(shí)刻,把計(jì)數(shù)器的內(nèi)容拷貝到這個(gè)通道對(duì)應(yīng)的CCR寄存器,同時(shí)計(jì)數(shù)器還會(huì)繼續(xù)不斷地計(jì)數(shù)。

          當(dāng)使用一個(gè)通道測(cè)量脈寬時(shí),你需要先指定上升沿觸發(fā)捕獲,當(dāng)產(chǎn)生捕獲中斷時(shí),讀出CCR寄存器的內(nèi)容,再改變這個(gè)通道為下降沿捕獲,當(dāng)再次產(chǎn)生捕獲中斷時(shí),再讀出CCR寄存器的內(nèi)容并與上次的捕獲數(shù)值相減,結(jié)果就是脈寬。

          當(dāng)使用2個(gè)通道測(cè)量脈寬時(shí),你只需要指定一個(gè)通道為上升沿觸發(fā)捕獲,另一個(gè)通道為下降沿捕獲,計(jì)算方法與使用一個(gè)通道時(shí)相同,即把下降沿捕獲的數(shù)值減去上升沿捕獲的數(shù)值,結(jié)果就是脈寬。使用2個(gè)通道的好處是,在產(chǎn)生捕獲中斷時(shí)不必改變觸發(fā)捕獲的邊沿。


          關(guān)鍵詞: STM32PWM輸入模

          評(píng)論


          推薦視頻

          更多>>

          技術(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); })();