Может, есть у кого-то пример работы АЦП с прерыванием? Ну или хотя бы просто рабочий пример для STM32F4 - то, что в екземплах библиотеки - работает не так(
Цитата(esaulenka @ Apr 16 2018, 11:21)

libopencm3 для АЦП не использовал, но...
1) Константа ADC_SMPR_SMP_3CYC выбрана осознанно?
2) (некритично, но некрасиво) enable NVIC лучше делать в конце, когда всё настроено.
3) флажок статуса EOC сбрасывается самостоятельно, после чтения data register
1) А что с ней не так?
Немного изменены настройки по аналогии с SPL - в ней так работало((
Код
void adc_init(void)
{
rcc_periph_clock_enable(RCC_ADC1);
gpio_mode_setup(PLC_AIN1_PORT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, PLC_AIN1_PIN);
rcc_periph_clock_enable(RCC_ADC1);
adc_power_off(ADC1);
adc_set_clk_prescale(ADC_CCR_ADCPRE_BY2);
adc_disable_scan_mode(ADC1);
adc_set_right_aligned(ADC1);
adc_set_resolution(ADC1,ADC_CR1_RES_12BIT);
adc_enable_eoc_interrupt(ADC1);
adc_set_sample_time_on_all_channels(ADC1, ADC_SMPR_SMP_3CYC);
adc_set_continuous_conversion_mode(ADC1);
adc_power_on(ADC1);
my_delay(800000);
nvic_set_priority(NVIC_ADC_IRQ, 0);
nvic_clear_pending_irq(NVIC_ADC_IRQ);
nvic_enable_irq(NVIC_ADC_IRQ);
adc_set_regular_sequence(ADC1,1,channel_array);
adc_start_conversion_regular(ADC1);
}
uint32_t adc1_result=0;
void adc_isr(void)
{
ADC1_SR &= ~(ADC_SR_EOC);
adc1_result = adc_read_regular(ADC1);
}