描述:
我用定时器4配置成PWM输出,同时做为主模式,定时器5配置为输出比较模式,作为从模式。为什么定时器5没有进输出比较的中断里面
void Timer4_Init(void)
{
        GPIO_InitTypeDef                        GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef                TIM_TimeBaseStructure;
        TIM_OCInitTypeDef                        TIM_OCInitStructure;
        /* TIM4 clock enable */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
        /* GPIOD clock enable */
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
        //????TIM4μ?D?o?ê?3?1ü???aPD12£?OC1í¨μà£?ê?3?SINCD?o?
        /* TIM4 channel 1 pin (PD12) configuration */
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        
        
        /* Connect TIM pins to AF2 */
        GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);
         /* Time Base configuration */
         TIM_TimeBaseStructure.TIM_Prescaler = 4-1;                 //84M/4=21Mhz
         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
           TIM_TimeBaseStructure.TIM_Period = 700;                                 //21M/700=30Khz.
           TIM_TimeBaseStructure.TIM_ClockDivision = 0;
           TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
  /* Channel 1 Configuration in PWM mode */
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 350;                                        //50%
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
        TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
        TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
        
        TIM_OC1Init(TIM4, &TIM_OCInitStructure);
        
        /* Master Mode selection: TIM1 */
        TIM_SelectOutputTrigger(TIM4, TIM_TRGOSource_Update);//
        /* Select the Master Slave Mode */ 
        TIM_SelectMasterSlaveMode(TIM4, TIM_MasterSlaveMode_Enable);
        /* TIM enable counter */
        TIM_Cmd(TIM4, ENABLE);
        
        /* TIM1 Main Output Enable */
        TIM_CtrlPWMOutputs(TIM4,ENABLE);
        
}
void Timer5_Init(void)
{
        GPIO_InitTypeDef                        GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef                TIM_TimeBaseStructure;
        /* TIM9 clock enable */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
        /* GPIOE clock enable */
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
        /* Configure PD11 in output pushpull mode */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
 

