void PWMS8_Init(unsigned short cycle,unsigned short duty,unsigned short pulse_n)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseStructure.TIM_Period = cycle-1;
TIM_TimeBaseStructure.TIM_Prescaler = 7199;//100us
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = pulse_n;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
TIM_GenerateEvent(TIM8,TIM_EventSource_Update);
TIM_InternalClockConfig(TIM8);
TIM_SelectOCxM(TIM8,TIM_Channel_1,TIM_OCMode_PWM2);
/* PWM1 Mode configuration: Channel2 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = duty-1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC1Init(TIM8, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM8, ENABLE);
/* TIM8 enable counter */ TIM_CtrlPWMOutputs(TIM8,ENABLE); TIM_SelectOnePulseMode(TIM8,TIM_OPMode_Single); TIM_Cmd(TIM8, ENABLE); }
|