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

          新聞中心

          STM32 Timer PWM_Output

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          脈沖寬度調(diào)制模式可以產(chǎn)生一個(gè)由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號(hào)。
          下面是一個(gè)PWM模式1的例子。當(dāng)TIMx_CNT

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

          庫函數(shù) STM32F10x_StdPeriph_Lib_V3.3.0ProjectSTM32F10x_StdPeriph_ExamplesTIMPWM_Output

          主要程序如下:

          uint16_t CCR1_Val = 333; // 333/666=0.5 占空比
          uint16_t CCR2_Val = 249; // 249/666=0.374
          uint16_t CCR3_Val = 166; // 166/666=0.25
          uint16_t CCR4_Val = 83; // 83/666 =0.125
          uint16_t PrescalerValue = 0;

          /* Private function prototypes -----------------------------------------------*/
          void RCC_Configuration(void);
          void GPIO_Configuration(void);

          /* Private functions ---------------------------------------------------------*/

          /**
          * @brief Main program
          * @param None
          * @retval None
          */
          int main(void)
          {
          /*! this is done through SystemInit() function which is called from startup
          file (startup_stm32f10x_xx.s) before to branch to application main.
          To reconfigure the default setting of SystemInit() function, refer to
          system_stm32f10x.c file
          */

          /* System Clocks Configuration */
          RCC_Configuration();

          /* GPIO Configuration */
          GPIO_Configuration();

          /* -----------------------------------------------------------------------
          TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles:
          The TIM3CLK frequency is set to SystemCoreClock (Hz), to get TIM3 counter
          clock at 24 MHz the Prescaler is computed as following:
          - Prescaler = (TIM3CLK / TIM3 counter clock) - 1
          SystemCoreClock is set to 72 MHzfor Low-density, Medium-density, High-density
          and Connectivity line devices and to 24 MHz for Low-Density Value line and
          Medium-Density Value line devices

          The TIM3 is running at 36 KHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1)
          = 24 MHz / 666 = 36 KHz 36036HZ
          TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%
          TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%
          TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%
          TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%
          ----------------------------------------------------------------------- */
          /* Compute the prescaler value */
          PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
          /* Time base configuration */
          TIM_TimeBaseStructure.TIM_Period = 665;//Autoreload value ARR
          TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
          TIM_TimeBaseStructure.TIM_ClockDivision = 0;
          TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

          TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

          /* PWM1 Mode configuration: Channel1 */
          TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
          TIM_OCInitStructure.TIM_Pulse = CCR1_Val;/* Set the Capture Compare Register value CCR1 */
          TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

          TIM_OC1Init(TIM3, &TIM_OCInitStructure);
          // Enables or disables the TIMx peripheral Preload register on CCR1.
          TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

          /* PWM1 Mode configuration: Channel2 */
          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
          TIM_OCInitStructure.TIM_Pulse = CCR2_Val;

          TIM_OC2Init(TIM3, &TIM_OCInitStructure);

          TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

          /* PWM1 Mode configuration: Channel3 */
          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
          TIM_OCInitStructure.TIM_Pulse = CCR3_Val;

          TIM_OC3Init(TIM3, &TIM_OCInitStructure);

          TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);

          /* PWM1 Mode configuration: Channel4 */
          TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
          TIM_OCInitStructure.TIM_Pulse = CCR4_Val;

          TIM_OC4Init(TIM3, &TIM_OCInitStructure);

          TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);

          TIM_ARRPreloadConfig(TIM3, ENABLE);

          /* TIM3 enable counter */
          TIM_Cmd(TIM3, ENABLE);

          while (1)
          {}
          }

          通用TIMx (TIM2、TIM3、TIM4和TIM5)定時(shí)器功能包括:

          ● 16位向上、向下、向上/向下自動(dòng)裝載計(jì)數(shù)器

          ● 16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為1~65536之間的任意數(shù)值

          ● 4個(gè)獨(dú)立通道: ─ 輸入捕獲 ─ 輸出比較 ─ PWM生成(邊緣或中間對(duì)齊模式) ─ 單脈沖模式輸出

          ● 使用外部信號(hào)控制定時(shí)器和定時(shí)器互連的同步電路

          ● 如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA: ─ 更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā)) ─ 觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù)) ─ 輸入捕獲 ─ 輸出比較

          ● 支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路

          ● 觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理



          關(guān)鍵詞: STM32TimerPWMOutpu

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