This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

STM32F4 input capture

I have code like this to capture input frequecy of PE11 (timer 1 CC 2) of STM32F4:

TIM_ICInitTypeDef  TIM_ICInitStructure ;

        GPIO_InitTypeDef   GPIO_InitStructure ;

        NVIC_InitTypeDef   NVIC_InitStructure ;

        // TIM1 clock enable
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE) ;

        // GPIOA clock enable
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE) ;

        // TIM1 channel 2 pin (PE.11) configuration (alternate function)
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_11 ;
        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(GPIOE, &GPIO_InitStructure) ;

        // Connect TIM pins to AF2
        GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_TIM1) ;

        // Enable the TIM1 global Interrupt
        NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn ;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0 ;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1 ;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE ;
        NVIC_Init(&NVIC_InitStructure) ;

        // TIM1 configuration: Input Capture mode
    // The external signal is connected to TIM1 CH2 pin (PE.11)
    // The Rising edge is used as active edge,
    // The TIM1 CCR2 is used to compute the frequency value
        // An interrupt is generated on both rising and falling edges

        TIM_ICInitStructure.TIM_Channel = TIM_Channel_2 ;
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge ;
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI ;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1 ;
        TIM_ICInitStructure.TIM_ICFilter = 0x0 ;

        TIM_ICInit(TIM1, &TIM_ICInitStructure) ;

        // TIM enable counter
        TIM_Cmd(TIM1, ENABLE) ;

        // Enable the CC2 Interrupt Request
        TIM_ITConfig(TIM1, TIM_IT_CC2, ENABLE) ;

My code is based on samples, but even in those sample the prescalar of TIM1 itself is not programmed. Can I do that in addition to the settings above? I need to slow it down - AHB bus way too fast.

0