Добрый день! Хотел спросить у знающих людей, дабы ткнули меня носом, а то я подзапутался - как сделать так, чтобы происходило прерывание при повороте ручки механического энкодера? Какие конкретно нужно эвенты сконфигурировать и как это будет работать. Заранее спасибо за помощь!
Я пробовал делать по переполнению, однако ничего не работает: Я включил общие прерывани и прерывания по таймеру 2: __enable_irq ();//enable common interrupts NVIC_EnableIRQ(TIM2_IRQn);//enable TIMER2 interrupt Потом при инициализации таймера поставил бит : TIM2->DIER|=TIM_DIER_UIE; и вот так выглядит обработчик прерываний: void TIM2_IRQHandler(void) { NVIC_DisableIRQ(TIM2_IRQn); shift_cursor(1); TIM2->SR &= ~TIM_SR_UIF; NVIC_EnableIRQ(TIM2_IRQn); }
И вообщем ничего не работает. Значения в счетном регистре CNT изменяются как и положено при вращении ручки энкодера. В чем может быть проблема?
|