А зачем вы выставили бит CIRC? Вот он вам и гонит следующие 1000 отсчетов без остановки.
Настройте ПДП со сброшенным битом CICR на первый массив. В прерывании ПДП об окончании пересылки настройте ПДП на второй массив и т.д.
А запускать можно либо ПДП (одно действие с битом EN, все остальное уже подготовлено) в прерывании от EXTI (как сейчас у вас сделано), либо можно ПДП запустить заранее, а этим внешним сигналом запускать таймер, который тактирует выборки вашего АЦП (если этот сигнал заведен на подходящий вход таймера).
И еще - завязывайте с магическим числами. В том же самом файле, где описаны структуры периферии, описаны и мнемонические имена битов:
Код
DMA1_Channel1->CCR = 0
| 1 * DMA_CCR1_EN // enable channel
| 1 * DMA_CCR1_TCIE // Transfer complete interrupt
| 1 * DMA_CCR1_HTIE // Half Transfer interrupt
| 0 * DMA_CCR1_TEIE // Transfer error interrupt
| 0 * DMA_CCR1_DIR // Data transfer direction: Peripheral->Memory
| 1 * DMA_CCR1_CIRC // Circular mode
| 0 * DMA_CCR1_PINC // Peripheral increment mode
| 1 * DMA_CCR1_MINC // Memory increment mode
| 0 * DMA_CCR1_PSIZE_0 // Peripheral size: 8 bits
| 0 * DMA_CCR1_MSIZE_0 // Memory size: 8 bits
| 0 * DMA_CCR1_PL_0 // Channel Priority level: lowest, conversion frequency is low enough
| 0 * DMA_CCR1_MEM2MEM // Memory to memory mode disabled
;