STM32 ADC+DMA occurring only once
I know it's late, but I'm going to put my answer here for other people's reference. I was using the STM HAL library and ran into this problem. The HAL library had the same bug as the code above. 

To solve it, either:


Set the CR2_DDS bit, as in the accepted answer. However this might cause overrun error, as data is continuously converted.
Clear the CR2_DMA bit before setting it again (or call ADC_HAL_Start_DMA) to start the sampling again. This method should give you better control of when the sampling should be done.