布衣灬强 发表于 2015-1-30 21:21:52

通用定时器的PWM输入捕捉模式下四个通道能同时进行捕捉?

通用定时器的PWM输入捕捉模式下,定时器的四个通道能同时进行PWM捕捉么?

hmillionaire 发表于 2015-1-30 22:32:43

我感觉不能,应该有时间先后顺序,这是我的想法,嘿嘿,菜鸟的想法。我渴望找出答案

lkl0305 发表于 2015-1-31 09:12:40

楼主实验一下啊

holts1 发表于 2015-1-31 09:21:15

可以的

布衣灬强 发表于 2015-1-31 09:49:22

holts1 发表于 2015-1-31 09:21
可以的

void TIM_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        TIM_ICInitTypeDefTIM_ICInitStructure;

        /* TIM4 clock enable */
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

        /* GPIOB clock enable */
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

        /* TIM4 chennel2 configuration : PB.07 */
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6;
        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_UP ;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_7;
        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_UP ;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8;
        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_UP ;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
        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_UP ;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        /* Connect TIM pin to AF2 */
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_TIM4);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM4);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_TIM4);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_TIM4);
       
        /* Enable the TIM4 global Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
        TIM_ICInitStructure.TIM_ICFilter = 0x0;

        TIM_PWMIConfig(TIM4, &TIM_ICInitStructure);

        /* Select the TIM4 Input Trigger: TI2FP2 */
        TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2);

        /* Select the slave Mode: Reset Mode */
        TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Reset);
        TIM_SelectMasterSlaveMode(TIM4,TIM_MasterSlaveMode_Enable);

        /* TIM enable counter */
        TIM_Cmd(TIM4, ENABLE);

        /* Enable the CC2 Interrupt Request */
        TIM_ITConfig(TIM4, TIM_IT_CC1, ENABLE);

}

void TIM4_IRQHandler(void)
{
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);

/* Clear TIM4 Capture compare interrupt pending bit */
TIM_ClearITPendingBit(TIM4, TIM_IT_CC2);

/* Get the Input Capture value */
IC2Value = TIM_GetCapture2(TIM4);

if (IC2Value != 0)
{
    /* Duty cycle computation */
    DutyCycle = (TIM_GetCapture1(TIM4) * 100) / IC2Value;

    /* Frequency computation
       TIM4 counter clock = (RCC_Clocks.HCLK_Frequency)/2 */

    Frequency = (RCC_Clocks.HCLK_Frequency)/2 / IC2Value;
}
else
{
    DutyCycle = 0;
    Frequency = 0;
}
}

布衣灬强 发表于 2015-1-31 09:50:15

布衣灬强 发表于 2015-1-31 09:49


这样配置后TIM_GetCapture2(TIM4)一直是0。

布衣灬强 发表于 2015-1-31 09:52:17

布衣灬强 发表于 2015-1-31 09:50
这样配置后TIM_GetCapture2(TIM4)一直是0。

B9是通道4
页: [1]
查看完整版本: 通用定时器的PWM输入捕捉模式下四个通道能同时进行捕捉?