Received my ebay STM32F103C8 “Blue Pill” board today.  It’s a really inexpensive $2 72Mhz ARM Cortex-M3 dev board that is also Arduino compatible. The Arduino Core is called STM32duino.

There is a 6 axis grbl version available.  This requires the free Atollic TrueSTUDIO to compile the source code.  So far no problems running it on the dev board.  I find it to be a little bit slower than LPC1769/grbl-lpc version running laser grayscale raster image scanning.   This is the firmware if you don’t want to compile your own version.  The i/o pin mapping is found in the cpu_map.h file.

You can use these instructions on how to burn the grbl firmware.  Just upload the above firmware file instead of the bootloader.  You may need to install the STM32 virtual com port driver if you are running a older version of Windows.

Lightburn Laser software has no problem connecting and controlling the STM32/grbl version.

Single axis maximum step pulse rate is about 95khz.

Updated 4 axis firmware with increased buffer size. I changed the following config.h settings:
This greatly improved the laser grayscale raster speed.

Same  4 axis firmware as above but with inverted PWM.  The inverted PWM code update was from this STM32 fork by mstrens.  Thanks!

After uploading new firmware, issue a $RST=* in the console. This will reset the boards eeprom and load the default grbl settings.


This is a logic analyzer screen shot capture of 4 axis simultaneous movement.  The gcode command was g1x.2y.2z.2a.2f10000. The step pulse timing outputs are the same for each axis. I ran various simultaneous gcode move commands and the timing logic all look good.  Different acceleration and step per mm settings were also tested.

Variable Laser PWM, M7, M8, M9 outputs work.


stm32f103-pinout-diagram-1024x724Pinout diagram; courtesy of Rasmus Friis Kjeldsen: