Hi Ben,
I think I've hit a firmware bug on the Quarto worth flagging. Churning a running IntervalTimer with end() / begin() can hard-wedge the board, USB goes dead and only a re-flash or power-cycle brings it back.
It's in the core's shared PIT handler (cores/imxrt/IntervalTimer.cpp): it clears a channel's TFLG only when a callback is still registered, but end() removes the callback before it disables the channel. A timer rollover in that window leaves the flag set, so the shared PIT interrupt re-fires forever an interrupt storm that starves everything, USB included. Clearing TFLG unconditionally in the handler fixes it.
Minimal reproduction (one sketch + one Python script) and the one-line fix here: https://github.com/E-zClap/qnimble-intervaltimer-freeze. On core 2.5.2 the stock timer freezes within 11k end/begin cycles on every run; the patched handler survives 500k+. Happy to open a PR if useful, thanks for the great hardware!