Skip to content
This repository is based on which in turn is based on
C HTML Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
stm_usb_fs_lib Add files via upload Dec 28, 2018
stm32_flash.ld Add files via upload Dec 28, 2018
stm32grbl11.elf.launch Add files via upload Dec 28, 2018


This repository is based on usbcnc grbl which in turn is based on native grbl 1.1f
With 6-AXIS-USBCNC-GRBL you can use 3,4(default),5 or 6 axis depend on definition in config.h stm32f103-usbcnc-pinout
Also there are some bugs (from usbcnc grbl) were fixed and some improvements were done. Some of them:

  • migrate from coIDE to Atollic truestudio
  • 4,5,6th axis were added
  • uint16_t probe_invert_mask
  • issue#36 from usbcnc
  • issue#38 from usbcnc
  • issue#41 from usbcnc
  • issue#46 from usbcnc
  • issue#40 from usbcnc
  • issue#49 from usbcnc
  • issue#48 from usbcnc. STEP_PULSE_DELAY now works
  • GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // to enable PA15, PB3, PB4 pins
  • improved performance and stability in stepper.c issue#48 from usbcnc
  • issue#60 from usbcnc
  • issue#61 from usbcnc

Before homing "error:7" appears 2 times due to startup blocks are empty. It's ok. To eliminate this: set the startup blocks or comment definition in config.h

Get started

  • Install Atollic truestudio
  • add this project to Atollic
  • (optional!) configure grbl with config.h (4 axis by default. You can't change it through the grbl interface) and default.h (you can change this settings later throught the grbl interface)
  • (optional! do this if you did the previous step) compille it
  • use st-link v2 or China clones for downloading firmware to bluepill
  • configure grbl with "$x=val" commands (optional)
  • use grbl controller with UGS, GcodeSender , OpenCNCPilot or other interfaces.

  • You can also use UART (TX1, RX1) instead of USB to connect grbl controller via bluetooth and use with android app "Grbl Controller". Just #undef USEUSB in grbl.h after #ifdef STM32F103C8 or delete "USEUSB" in project properties -> C/C++ General -> Path and Symbols -> Symbols.
  • If you want to use UART and more then 4 axis, you can map "B" axis Step and Dir outputs to PA11,12 instead of PA9,10 (see cpu-map.h).
  • Don't map any pins if not sure. Some of them use microcontroller hardware features which aren't available on the other ones.
You can’t perform that action at this time.