Why does DMA send the first byte as soon as it is enabled?
I found the answer to this some time ago, posting it here in the hope it will help others. 

The reason 1 byte is sent immediately on enabling DMA, is because a DMA request (DRQ) is still active from the last time that TIM8 ran.

TIM8 keeps running and raising DRQ signals, even after all the bytes in the buffer have been written and DMA stops. TIM8 is gated by TIM1, and only stops when TIM1 is reset.

Before enabling DMA, the previously-activated DRQ needs to be reset. There is no way to directly do this. Resetting TIM8 doesn't clear the DRQ. But you can clear it by clearing and then re-setting the appropriate bit in the DIER register.

The code to do so is below.

// Disable the DMA request line, then re-enable it to clear any pending request.
TIM8-&gt;DIER &amp;= ~ TIM_DIER_UDE;
TIM8-&gt;DIER |= TIM_DIER_UDE;