TIM1 appears to not stop
It appears that clearing the enabled flag has no effect when the timer is in slave mode.
I have changed my interrupt handler as follows, and now it is working as expected. The timer is stopped and reset, until started again by TIM5.

// Clear interrupt flags
DMA2-&gt;HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5;

// Disable slave move, can't stop the timer unless we do this first
TIM1-&gt;SMCR = 0;

// Stop TIM1, TIM5 will re-enable it
TIM1-&gt;CR1 = 0;// &amp;= (u16)~TIM_CR1_CEN;
TIM1-&gt;EGR = TIM_EventSource_Update;     // Trigger an Update to reset the counter

// Re-enable slave mode
TIM1-&gt;SMCR = TIM_SlaveMode_Trigger;