PWM输出

PWM(Pulse Width Modulation),脉冲宽度调制。

脉冲的频率由ARR控制,ARR越大频率越小;占空比由CCRx控制,CCRx越小占空比越大。

捕获/比较通道的输出部分(通道1) :

PWM输出_第1张图片

CCER:捕获比较使能寄存器

CCMR:捕获比较模式寄存器

OC:输出比较

计数器寄存器(TIMx_CNT) 与捕获比较寄存器(CCR1)进行比较,TIMx_CCMR的OC1M控制向上捕获还是向下捕获,输出OC1erf,

TIMx_CCER的CC1P控制输出极性,TIMx_CCER的CC1E控制输出使能。

需要用到TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

TIM_OCInitTypeDef  TIM_OCInitStructure; 

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
  TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高

TIM_OC1Init(TIM8, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIM8

  TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);  //CH1使能输出比较预装载  

  TIM_ARRPreloadConfig(TIM8, ENABLE); //使能自动重装载的预装载寄存器

(假如用到的pin脚需要重映射(Remap)应调用RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)和GPIO_PinRemapConfig(GPIO_PartialReamp_TIMx,ENABLE)。)

在main中调用TIM_SetComparex(ccrx)改变占空比;

你可能感兴趣的:(PWM输出)