1. 程式人生 > >STM32中PWM的引數配置

STM32中PWM的引數配置

我們引用ST官方給出的F10xStd3.5的庫中的TIM>PWM_Output中的例程來舉例

可以看出配置pwm引數主要是倆個函式

PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 665;
  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;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);

你的頻率f=(SystemCoreClock/(PrescalerValue+1))/Period

f*Period=SystemCoreClock/(Prescaler+1)

當SystemCoreClock取72M時 不妨取Prescaler為71 這樣

f=1M/Period

而CRR1_Val是基於Period的佔空比