TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0;
TIM14->PSC = 999; // 48kHz
TIM14->CCER = TIM_CCER_CC1E;
TIM14->DIER = TIM_DIER_UIE;
NVIC_EnableIRQ(TIM14_IRQn);
NVIC_SetPriority(TIM14_IRQn, 0);
Аналогично для TIM3. Потом установка скорости:
TIM_TypeDef *TIMx = nmotor ? TIM3 : TIM14;
TIMx->ARR = stphigharr[nmotor];
TIMx->CCR1 = TIMx->ARR >> 1;
TIMx->CR1 |= TIM_CR1_CEN;
Начинаю со скорости в 10 раз меньше номинальной, дальше разгон, в конце — торможение. Все тупо, внутри обработчика прерывания...
Запускаю — и вместо положенных 80Гц (48кГц/600 — начальная скорость) вижу около 3Гц (с осциллографом буду завтра разбираться, смотрел на светодиод). На 042 аналогичный код работал правильно. Буду искать...
Journal information