I've gone back and forth between the datasheet and libmaple API for half a day trying to get DMA transmit to work right. I haven't had any success unfortunately.
Here is what I have so far: http://pastebin.com/6fPptpvL
The code simply tries to send one short string out before entering a blinky loop. The blinky loop is just there to tell me if it got hung up on the DMA initialization or not (which it doesn't - it continues on to blinky just fine).
This is strait C out of libmaple. I've tested my own interrupt driven USART TX successfully already (along with many other peripherals - so I'm pretty sure the build system or reference to libmaple is not the issue) and was trying to get a DMA solution to work but with no luck so far.
Here's what I've gathered from the datasheet:
1. USART must have DMAT bit enabled in CR3 (DMA transmit)
2. DMA must be set up for memory to peripheral, USART data register as the peripheral address, the start of my buffer for memory address, 8-bit sizes for each, auto-increment memory address, and interrupt on completion.
3. Number of transfers set to the length of my test buffer
After calling DMA enable, I can't seem to get any activity on the USART. I must be missing something obvious, any help or another set of eyes would be much appreciated.