Ticks / nanosecond delay
Running at 72 MHz one instruction cycle is ~ 14 ns. Instruction timing is roughly 1 instruction per cycle, but memory access, the peripheral bus, branch penalty, and flash timing all get in the way. To get an external waveform that is accurate enough for a single WS2813B is doable in assembler, but for a chain of these LEDs it is a very tough (or impossible) job.

Your best chance is to (mis) use the SPI peripheral, and feed it bytes that are pre-calculated to produce the desired waveform.

Or switch to the WS2801, which has separate clock and data lines.



update:

The advantage of SPI is that there is some buffering - IIRC you can load one byte while the other is being shifted out, and the hardware will take care of putting the bytes immediately after each other. This takes most of the pain out of the timing.

One of my students actually did this for his end-of-first-year project, but that was on an Arduino Due (also Cortex M3, but at 92 MHz, and with a different SPI peripheral). He first tried to get the timing right uysing tweaked C++, but that was too fragile and could not handle a longer chain.