TIM1_CH1 TIM1_CH1N

2019-10-15 02:31发布

请教一下,有没有人使用过TIM1_CH1 TIM1_CH1N互补输出,可否分享一下代码,谢谢! 103系列
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
haijun
2019-10-15 08:08
今天调试通了,使用205系列,PA7为TIM1_CH1, PA8为TIM1_CH1N,配置的原代码如下,有需要的可以参考
void TIM1_Init(int32_t Duty,int32_t Frequency)
{        
  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
  TIM_OCInitTypeDef         TIM_OCInitStructure;
  GPIO_InitTypeDef          GPIO_InitStructure;        
        TIM_BDTRInitTypeDef       TIM_BDTRInitStructure;

  uint16_t PrescalerValue = 0;
  uint16_t Channel1Pulse  = 0;

        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);
  
        GPIO_InitStructure.GPIO_Pin         = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd         = GPIO_PuPd_UP ;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
  
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TIM1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_TIM1);

        PrescalerValue = (120000000 / Frequency ) - 1;  
        
        Channel1Pulse = (uint16_t) (((uint32_t) Duty * (PrescalerValue- 1)) / 100);
  
  TIM_TimeBaseStructure.TIM_Prescaler                           = 0;
  TIM_TimeBaseStructure.TIM_CounterMode                   = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period                                     = PrescalerValue;
  TIM_TimeBaseStructure.TIM_ClockDivision                 = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

        // Channel 1 Configuration in PWM mode
        TIM_OCInitStructure.TIM_OCMode                           = TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OutputState         = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OutputNState         = TIM_OutputNState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity                 = TIM_OCPolarity_Low;//TIM_OCNPolarity_High;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_OCInitStructure.TIM_Pulse                           = Channel1Pulse;
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);
        
        // Channel 2 Configuration in PWM mode
        TIM_OCInitStructure.TIM_OCMode                           = TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OutputState         = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OutputNState         = TIM_OutputNState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity                 = TIM_OCPolarity_Low;
        TIM_OCInitStructure.TIM_OCNPolarity         = TIM_OCPolarity_Low;//TIM_OCNPolarity_High;
        TIM_OCInitStructure.TIM_OCIdleState         = TIM_OCIdleState_Set;
        TIM_OCInitStructure.TIM_OCNIdleState  = TIM_OCIdleState_Reset;
  
         TIM_OCInitStructure.TIM_Pulse                           = Channel1Pulse;
        TIM_OC2Init(TIM1, &TIM_OCInitStructure);
        
        
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
        TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Disable;//TIM_OSSRState_Enable;
        TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSRState_Disable;//TIM_OSSIState_Enable;
        TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_3;//TIM_LOCKLevel_OFF;
        TIM_BDTRInitStructure.TIM_DeadTime = 0;
        TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
        TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
        TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
        TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
                                

        TIM_Cmd(TIM1, ENABLE);

        TIM_CtrlPWMOutputs(TIM1, ENABLE);                        
}

一周热门 更多>