GPIO_InitTypeDef GPIO_InitStre;
RCC_AHB1PeriphClockLPModeCmd(RCC_AHB1Periph_GPIOC, ENABLE);
GPIO_InitStre.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStre.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStre.GPIO_OType=GPIO_OType_PP;
GPIO_InitStre.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStre.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStre);
/* Connect TIM8 pins to AF2 */
GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_TIM8);
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStre;
TIM_OCInitTypeDef TIM_OCInitStre;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
//计数频率20kHz=168/(TIM_Prescaler+1)/(TIM_Period+1)
TIM_TimeBaseInitStre.TIM_Prescaler=0;//定时器频率168M/(0+1)
TIM_TimeBaseInitStre.TIM_Period=11200-1;//周期计数值 15k-11200
TIM_TimeBaseInitStre.TIM_ClockDivision=0x00;//不分频
TIM_TimeBaseInitStre.TIM_CounterMode=TIM_CounterMode_Up ;
TIM_TimeBaseInitStre.TIM_RepetitionCounter=0x00;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseInitStre);
TIM_OCInitStre.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStre.TIM_Pulse=0;//占空比0%
TIM_OCInitStre.TIM_OCPolarity=TIM_OCPolarity_High ;
TIM_OCInitStre.TIM_OutputState=TIM_OutputState_Enable ;
TIM_OCInitStre.TIM_OCIdleState=TIM_OCIdleState_Reset ;
TIM_OC3Init(TIM8, &TIM_OCInitStre);//消音圈
TIM_CtrlPWMOutputs(TIM8, ENABLE);//注意!!高级定时器要加这个使能
TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);
TIM_Cmd(TIM8, ENABLE);//使能时钟