RCC_APB2ENR_ADC1EN = 1 // тактирование ADC1 RCC_AHB1ENR_DMA2EN = 1 // тактирование DMA2 RCC_AHB1ENR_GPIOAEN = 1 // тактирование GPIOA GPIOA_MODER_0 = 0b11 // настройка GPIO_PA0 как аналоговый GPIOA_MODER_1 = 0b11 // настройка GPIO_PA1 как аналоговый ADC1_CR1_ADON = 0 // отключение тактов на преобразование DMA2_S0CR_EN = 0 // остановка потока 0 DMA_S0NDTR_NDT = 20 // количество транзакций в потоке 0. 2 канала по 10 транзакций = 20 транзакций. DMA_S0PAR_PAR = 0x4001204C // aдрес периферии (регистра ADC1_DR) DMA_S0M0AR = ... // aдрес памяти (первая ячейка массива хранения результатов) DMA2_S0CR_CHSEL = 0 // поток 0 настроить на канал 0 - ADC1 DMA2_S0CR_CT = 0 // адрес памяти в DMA_S0M0AR DMA2_S0CR_MSIZE = 0b01 // передача в память 16-и битных данных DMA2_S0CR_PSIZE = 0b01 // передача из периферии 16-и битных данных DMA2_S0CR_MINC = 1 // увеличивать адрес памяти при каждой транзакции DMA2_S0CR_PINC = 1 // адрес периферии при каждой транзакции не изменять DMA2_S0CR_DIR = 0 // передача из периферии в память DMA2_S0CR_PFCTRL = 1 // управляет потоком периферия DMA2_S0CR_TCIE = 1 // разрешить прерывание при завершении передачи всех данных ADC1_SR = 0 // сброс флагов ADC1 ADC1_CR1_DISCNUM = 0b001 // использовать 2 канала ADC1_CR1_DISCEN = 1 // включить режим сканирования каналов ADC1_CR1_SCAN = 1 // включить сканирование каналов ADC1_CR2_EOCS = 0 // установка флага EOC после каждого преобразования ADC1_CR2_DDS = 1 // запросы DMA выдаются пока идет преобразование ADC1_CR2_DMA = 1 // работа с DMA ADC1_CR2_CONT = 1 // преобразование непрерывное (не одноразовое) ADC1_SMPR2_SMP0 = 0b010 // 28 тактов на преобразование канала 0 ADC1_SMPR2_SMP1 = 0b010 // 28 тактов на преобразование канала 1 ADC1_SQR1_L = 0b0001 // 2 преобразования ADC1_SQR3_SQ1 = 0b0000 // 1-ое преобразование канал 0 ADC1_SQR3_SQ1 = 0b0001 // 2-ое преобразование канал 1 ADC1_CR1_ADON = 1 // подача тактов на преобразование DMA2_S0CR_EN = 1 // запуск потока ADC1_CR1_SWSTART = 1 // запуск преобразования