用BSP里的TIM1 PWM程序改的,只有TIM1有输出,其他的都没有输出是什么原因
void TIM1_PWMOut_Init(u16 arr, u16 psc, u16 ccp)
{
GPIO_InitTypeDef GPIO_InitStructure={0};
TIM_OCInitTypeDef TIM_OCInitStructure={0};
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure={0};
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置PA8为复用推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( GPIOA, &GPIO_InitStructure );
TIM_TimeBaseInitStructure.TIM_Period = arr; //指定在下次更新事件时加载到活动自动重新加载寄存ARR中的周期值。
TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//指定用于分割TIM时钟的预分频值。
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit( TIM1, &TIM_TimeBaseInitStructure);
#if (PWM_MODE == PWM_MODE1)
? TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
#elif (PWM_MODE == PWM_MODE2)
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
#endif
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = ccp; //设置占空比大小
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init( TIM1, &TIM_OCInitStructure );
TIM_CtrlPWMOutputs(TIM1, ENABLE );
TIM_OC1PreloadConfig( TIM1, TIM_OCPreload_Disable );
TIM_ARRPreloadConfig( TIM1, ENABLE );
TIM_Cmd( TIM1, ENABLE );
}
void TIM4_PWMOut_Init(u16 arr, u16 psc, u16 ccp)
{
? ? GPIO_InitTypeDef GPIO_InitStructure={0};
? ? TIM_OCInitTypeDef TIM_OCInitStructure={0};
? ? TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure={0};
? ? RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB,ENABLE );
? ? RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4, ENABLE);
? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //设置PB6为复用推挽输出
? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
? ? GPIO_Init( GPIOB, &GPIO_InitStructure );
? ? TIM_TimeBaseInitStructure.TIM_Period = arr; //指定在下次更新事件时加载到活动自动重新加载寄存ARR中的周期值。
? ? TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//指定用于分割TIM时钟的预分频值。
? ? TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
? ? TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
? ? TIM_TimeBaseInit( TIM4, &TIM_TimeBaseInitStructure);
#if (PWM_MODE == PWM_MODE1)
? TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
#elif (PWM_MODE == PWM_MODE2)
? ? TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
#endif
? ? TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
? ? TIM_OCInitStructure.TIM_Pulse = ccp; //设置占空比大小
? ? TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
? ? TIM_OC1Init( TIM4, &TIM_OCInitStructure );
? ? TIM_CtrlPWMOutputs(TIM4, ENABLE );
? ? TIM_OC1PreloadConfig( TIM4, TIM_OCPreload_Disable );
? ? TIM_ARRPreloadConfig( TIM4, ENABLE );
? ? TIM_Cmd( TIM4, ENABLE );
}