CODE
void capture_timer_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseInitTypeDef timer_base;
TIM_ICInitTypeDef timer_ic;
/* TIM1 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
//GPIOA затактировано
/* TIM1 channel 2 pin (PE.11) configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
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(GPIOA, &GPIO_InitStructure);
/* Connect TIM pins to AF2 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_TIM5);
TIM_TimeBaseStructInit(&timer_base);
timer_base.TIM_Prescaler = 0;
TIM_TimeBaseInit(TIM5, &timer_base);
timer_ic.TIM_Channel = TIM_Channel_1;
timer_ic.TIM_ICPolarity = TIM_ICPolarity_Rising;
timer_ic.TIM_ICSelection = TIM_ICSelection_DirectTI;
timer_ic.TIM_ICPrescaler = TIM_ICPSC_DIV1;
timer_ic.TIM_ICFilter = 0;
TIM_ICInit(TIM5, &timer_ic);
TIM_ITConfig(TIM5, TIM_IT_CC1, ENABLE);
TIM_Cmd(TIM5, ENABLE);
NVIC_EnableIRQ(TIM5_IRQn);
}
volatile uint32_t capture1 = 0, capture2 = 0;
void TIM5_IRQHandler(void)
{
if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM5, TIM_IT_CC1);
capture1 = capture2;
capture2 = TIM_GetCapture1(TIM5);
if (TIM_GetFlagStatus(TIM5, TIM_FLAG_CC1OF) != RESET)
{
TIM_ClearFlag(TIM5, TIM_FLAG_CC1OF);
}
}
}
Что я сделал не так ? таймер запускается, начинает считать, но счетчик cnt встает на значении 0x0501C956 и дальше не считает... Импульсов на ногу не подается при этом, в прерывания не заходит, но все равно встает на этом значении... Перезапуск ничего не делает, таймер дальше не считает...
п.с. stm32f407vgt