You can do some tricky stuff with STM32 DMA when it's controlled by timers. The bigger timers can generate half a dozen different events that you can plumb into different DMA streams. Use one of those streams to reprogram the timer itself along the way for complex (and difficult to maintain) behavior.
That's what i indirectly hinted about, an extension of ST implementation sort of , the problem with ST solutions is that the timers dont stretch beyond the timers and if one timer is used to cause multiple streams it eat DMA streams and still the whole thing is merely about shuffling data from one place to another. Still better to have it then not.
I was very impressed with TI's solution which is available on the BeagleBone boards:
http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Subsystem
Thats interesting!