stm32定时器TIM2的PWM输出PB3

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leibihui0556/article/details/77853449

弄了好久,查了很多文章,最后解决了,用的是PB3
引脚配置

void GPIO_TimPWM(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;     
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);   
  GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);  
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;          
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3 ;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);  
}

定时器和中断配置

void Timer2_Configuration(void)
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 TIM_OCInitTypeDef  TIM_OCInitStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
 TIM_TimeBaseStructure.TIM_Period = 1000-1;             
 TIM_TimeBaseStructure.TIM_Prescaler = 72-1;            
 TIM_TimeBaseStructure.TIM_ClockDivision = 0x00;    
 TIM_TimeBaseStructure.TIM_CounterMode =  TIM_CounterMode_Up;   
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  TIM_ARRPreloadConfig(TIM2, DISABLE);
 TIM_ClearITPendingBit(TIM2,  TIM_IT_Update); 
 TIM_ITConfig(TIM2,  TIM_IT_Update, ENABLE);
 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
 TIM_OCInitStructure.TIM_OutputState =   TIM_OutputState_Enable; 
 TIM_OCInitStructure.TIM_Pulse = 500-1;     
 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
 TIM_OC2Init(TIM2, &TIM_OCInitStructure);  
 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);  
 TIM_CtrlPWMOutputs(TIM2,ENABLE);       
 TIM_Cmd(TIM2, ENABLE);
}

产生1K的频率

猜你喜欢

转载自blog.csdn.net/leibihui0556/article/details/77853449