I'd look at turning off interrupts and just polling ARM_DWT_CYCCNT to do a variety of tasks with perhaps .1 usec accuracy.