If by 300Hz you mean 300 steps per second then I don't see any need to use a HardwareTimer. That rate is well within the capability of simple code using micros()
Have a look at the examples in this Simple Stepper Code - especially the second example. It should be capable of modification to provide a few thousand steps per second.
...R
Stepper Motor Basics