With the code the way it is, you cannot use M3 and M5 to toggle the state of the Spindle Enable pin because it's not initialized as an output. The fix is really simple.
If you add those two lines:
GPIO_InitStructure.GPIO_Pin = 1 << SPINDLE_ENABLE_BIT; GPIO_Init(SPINDLE_ENABLE_PORT, &GPIO_InitStructure); // <--- initializes the spindle enable pin
To the file spindle_control.c, after the line 68, which initializes the Spindle Dir pin with the function
GPIO_Init(SPINDLE_ENABLE_PORT, &GPIO_InitStructure);
Then M3 Sx will turn the spindle en bit high and M5 will turn it low, just like it was supposed to be.