***Question*** *MCU STM32 with stepper motor driver Allegro A4988 are moving a 2 coil, 4 wire, bipolar stepper motor ridiculously slowly, with flickers and stutters. How to fix?* --- [![a4988 pic 1][1]][1] --- [![a4988 pic 3][2]][2] --- [![a4988 pic 2][3]][3] --- *The OP's original code (See Appendix A, B, and C below)* --- ***Answer*** *The schematic v0.1* --- [![a4988 v0.1][4]][4] --- */ to continue, ...* --- ***References*** */ to continue, ...* --- ***Appendices*** *Appendix A - The OP's Original Code - main.c* --- #include "./headers/stm32f767xx.h" #include <stdint.h> int main(void) { initMotor(0); // initialise the motor initLed(7); // initialise the led unsigned long a = 0; while (1) { if (a == 50000) { toggleLed(7); // this LED flashes a little quicker than twice per second stepMotor(0); // output a pulse to the driver to step the motor, attached to PA2 a = 0; } a++; } } --- *Appenidx B - The OP's Original Code - ./drivers/led.c* --- #include "../headers/stm32f767xx.h" void initLed(int pin) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; // enable the GPIOB clock GPIOB->MODER |= (0x1 << (pin * 2)); // set to output GPIOB->OTYPER = 0x00; // push-pull mode GPIOB->ODR = 0x00; // set output register to 0 across all pins } void toggleLed(int pin) { GPIOB->ODR ^= (0x1 << pin); // toggle the pin } --- *Appenidx C - The OP's Original Code - ./drivers/motor.c* --- #include "../headers/stm32f767xx.h" void initMotor(int step_pin) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // enable the GPIOA clock GPIOA->MODER |= (0x1 << (step_pin * 2)); // set to output GPIOA->OTYPER = 0x00; // push-pull mode GPIOA->PUPDR |= (0x2 << (step_pin * 2)); // pull down the pin specified GPIOA->ODR = 0x00; // set output register to 0 across all pins } void stepMotor(int step_pin) { GPIOA->ODR |= (1 << step_pin); // output to the pin specified GPIOA->ODR &= ~(1 << step_pin); // reset the output back to 0 } ---- */ to continue, ...* [1]: https://i.sstatic.net/FN7SL.jpg [2]: https://i.sstatic.net/Kf6Mj.jpg [3]: https://i.sstatic.net/QeS1S.jpg [4]: https://i.sstatic.net/V71gH.jpg