title: How to obtain reliable Cortex M4 short delays
body: <p>I am porting some code from an M3 to an M4 which uses 3 NOPs to provide a very short delay between serial output clock changes. The M3 instruction set defines the time for a NOP as 1 cycle. I notice that NOPs in the M4 do not necessarily delay any time at all.
  I am aware that I will need to disable compiler optimisation but I'm looking for a low level command that will give me reliable, repeatable times.
  In practice in this particular case the serial is used very occasionally and could be very slow but I'd still like to know the best way to obtain cycle level delays.</p>