Chyba źle się zabrałeś do sprawy ...
Nie pamiętam dokładnie, bo to było półtora roku temu, ale pisałem podobny projekt, obrotnicę z regulacją prędkości i pozycji końcowej.
Nic nie działało jak powinno, dopóki nie napisałem własnej procedury obsługi silnika, opartej na przerwaniu z timera, które wysyłało impuls step i zmniejszało zmienną opisującą ilość kroków pozostałych do wykonania.
Do tego było trochę zwykłego kodu, już poza przerwaniem, który regulował prędkość wpisując odpowiednie podzielniki do timera, a nawet robił rampy.
Niestety, jest też zła wiadomość, projekt się zatrzymał, bo szesnastobitowy licznik okazał się za krótki i zakres regulacji był za mały.
Mam to przepisać na STM32F103 (32 bitowe liczniki), ale zabieram się jak pies do jeża ...