48 MHz — timing margin for the bus
At 48 MHz the Cortex-M0+ core executes most single-cycle instructions, so a tight control loop fits within the interrupt latency budget. The 4 KB RAM is the real constraint: keep your state machine lean and avoid large lookup tables.
