Пытаюсь запустить АЦП (канал 0) от таймера 2. Не работает...

Код
CODE
// Инициализация АЦП
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
ADC1->CR2 |= ADC_CR2_ADON;
ADC1->CR2 |= ADC_CR2_CAL;
while ((ADC1->CR2 & ADC_CR2_CAL) != 0);
ADC1->CR1 |= ADC_CR1_EOCIE;
NVIC_EnableIRQ(ADC1_2_IRQn);
ADC1->CR2 |= ADC_CR2_EXTTRIG | ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1;

...

// Инициализация таймера
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 32000 - 1;
TIM2->ARR = 199;
TIM2->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;
TIM2->CCR2 = TIM2->ARR;
TIM2->CR1 |= TIM_CR1_CEN;


Запуск АЦП в ручном режиме (через повторный ADC_CR2_ADON) работает. Если у таймера разрешить прерывание CC2IF — срабатывает когда надо. В чём ошибка?

Похоже, проблема в настройке события CC2 от таймера. АЦП прекрасно запускается от таймера 3 при такой инициализации:
CODE
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->PSC = 32000 - 1;
TIM3->ARR = 199;
TIM3->CR2 |= TIM_CR2_MMS_1;
TIM3->CR1 |= TIM_CR1_CEN;

Тогда как следует настраивать таймер 2?

Ну блиииин... Всё настроил, а включить забыл. Проблема решилась добавлением строчки
TIM2->CCER |= TIM_CCER_CC2E;

Надо пойти пообедать =)