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.