Да, запросы к DMA формируются только при обновлении данных в ADC1->DR. Поэтому запись DMA2_Stream0->PAR= (uint32_t)&ADC1->JDR1; хоть и корректна, но особого смысла не имеет. Пересылка будет запущена только (и каждый раз) после обновления результата в ADC1->DR.
И в чем глубокий смысл писать биты регистр по одному, используя операции ИЛИ и И? Неужели нельзя сформировать нужную константу и записать ее в регистр одной пересылкой? Например так: (пример для F100, но это непринципиально):
CODE
// start conversions
ADC1->CR2 = 0
| 1 * ADC_CR2_ADON // A/D Converter ON
| 0 * ADC_CR2_CONT // Continuous Conversion disabled
| 0 * ADC_CR2_CAL // A/D Calibration
| 0 * ADC_CR2_RSTCAL // Reset Calibration
| 1 * ADC_CR2_DMA // Direct Memory access enabled
| 1 * ADC_CR2_ALIGN // Data Alignment: left
| 7 * ADC_CR2_JEXTSEL_0 // External event for injected group: JSWSTART
| 0 * ADC_CR2_JEXTTRIG // External Trigger Conversion mode for injected channels: disabled
| 4 * ADC_CR2_EXTSEL_0 // External Event for regular group: TIM3TRGO
| 1 * ADC_CR2_EXTTRIG // External Trigger Conversion mode for regular channels: enabled
| 0 * ADC_CR2_JSWSTART // Start Conversion of injected channels
| 0 * ADC_CR2_SWSTART // Start Conversion of regular channels
| 0 * ADC_CR2_TSVREFE // Temperature Sensor and VREFINT disabled
;