We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.
Program the actual TIM time base, plenty of examples for that, set maximal period, and desired prescaler, so for example the TIM ticks at 1 MHz, or whatever.
Consider also the use of a 32-bit timer.