STM32F1要把TIM3配置成PWM输入模式,可是一直配不出来,走不出输入捕捉的阴霾

void  PWM_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
  TIM_IC_InitTypeDef sConfigIC1;
    //TIM_IC_InitTypeDef sConfigIC2;
    TIM_ClockConfigTypeDef sClockSourceConfig;
    TIM_MasterConfigTypeDef sMasterConfig;
    TIM_SlaveConfigTypeDef  sSlaveConfig;
  
    
    TIM3_RCC_ENABLE;
    TIM3_PIN_ENABLE;
    
    
    GPIO_InitStruct.Pin = PWM_IC1_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
  HAL_GPIO_Init(PWM_IC_PORT, &GPIO_InitStruct);
    
  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 5600-1;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period =0xFFFF;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.RepetitionCounter = 0;
  //HAL_TIM_IC_Init(&htim3);
  HAL_TIM_Base_Init(&htim3);
    //HAL_TIM_PWM_Init(&htim3);
    
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);
  

    
  sConfigIC1.ICPolarity=TIM_ICPOLARITY_RISING;//ÉÏÉýÑØ´¥·¢
    sConfigIC1.ICPrescaler=TIM_ICPSC_DIV1;      //ÊäÈëÔ¤·ÖƵ
    sConfigIC1.ICSelection=TIM_ICSELECTION_DIRECTTI;//¹Ü½ÅÓë¼Ä´æÆ÷¶ÔÓ¦¹Øϵ
    sConfigIC1.ICFilter=0x00;//Â˲¨ÉèÖ㬾­Àú¼¸¸öÖÜÆÚÌø±äÈ϶¨Îª²¨ÐÎÎȶ¨
  HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC1, TIM_CHANNEL_1);

    
//    sConfigIC2.ICPolarity=TIM_ICPOLARITY_FALLING ;
//  sConfigIC2.ICPrescaler=TIM_ICPSC_DIV1;      //ÊäÈëÔ¤·ÖƵ
//  sConfigIC2.ICSelection=TIM_ICSELECTION_DIRECTTI;//¹Ü½ÅÓë¿â´æÆ÷¶ÔÓ¦¹Øϵ
//  sConfigIC2.ICFilter=0x00;//Â˲¨ÉèÖ㬾­Àú¼¸¸öÖÜÆÚÌø±äÈ϶¨Îª²¨ÐÎÎȶ¨
//    HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC2, TIM_CHANNEL_2);

    //HAL_TIM_ConfigTI1Input(&htim3,TIM_TI1SELECTION_CH1);
    
    sSlaveConfig.SlaveMode=TIM_SLAVEMODE_RESET;
    sSlaveConfig.InputTrigger=TIM_TS_TI1FP1;
    sSlaveConfig.TriggerFilter=0;
    sSlaveConfig.TriggerPolarity=TIM_TRIGGERPOLARITY_RISING;
    sSlaveConfig.TriggerPrescaler=TIM_TRIGGERPRESCALER_DIV1;
    
    HAL_TIM_SlaveConfigSynchronization_IT(&htim3,&sSlaveConfig);
    
    sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
    sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
    
    __HAL_TIM_CLEAR_FLAG(&htim3,TIM_FLAG_CC1);
    __HAL_TIM_CLEAR_FLAG(&htim3,TIM_FLAG_CC2);

  HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(TIM3_IRQn);
    __HAL_TIM_ENABLE(&htim3);

}
这是我的初始化函数,不知道那个地方需要更改,但是能改的地方都改过了,获取CCR2是没有值啊,只有CCR1存在数值。
已邀请:

小明123

赞同来自: admin 乳酸君 DONGFANG

自己已经解决了,因为库里我没有找到相对应的函数,所以查阅手册,直接对寄存器进行操作。
TIM3->CCMR1 &= 0xF0F0;
    TIM3->CCMR1 |= 0x0201;
    TIM3->CCER  =0x0031;
希望对大家有用,大家如果发现了库里相对应的函数,希望可以告诉我一起学习进步

游睿

赞同来自:

请问你知道如果在cube中将某个引脚设置为PWM输入模式吗?

小明123

赞同来自:

QQ截图20160908165510.png可以先这么设置

要回复问题请先登录注册