September 28, 2026

The mac mini -- Considering CubeMX

CubeMX is a tool/system from ST micro for working with their STM32 series of ARM microcontrollers. I have never used it. I see CubeIDE downloads for Mac on apple silicon. Also a download for VSCode that I can ignore. I also see that CubeMX is not (no longer) included with CubeIDE. You run CubeMX first, then import files into CubeIDE.

I'll need a tutorial when I dive into this.

I am thinking of working with their H755 controller which has a reputation for being extremely complex. I have an H743 Nucleo board also that this might be interesting to try using with.

The general advice

It is supposed to be powerful and time-saving. It gives you access to USB libraries, and perhaps ethernet libraries also. It deals with complex clock trees, pin mux details and time spent digging through thousands of pages of reference manuals.

The big negative is code bloat. Also ST seems to be making the software setup more complex. For example CubeMX and CubeIDE are now separate packages.

This latter could be a good thing. I see discussions advocating using VS Code as an alternate to the CubeIDE. I would like to just use Vim and Makefiles, which is also a path others have gone down already.

Here are comments from an enthusiastic early adopter:

I also hear "Keil" mentioned (but not in a good way in this thread). Also Eclipse gets mentioned, which I have always hated (It is a slow pig of an IDE written in Java).

A workflow with Vim

Some people are infatuated with IDE development and will never be won over to this, but this is the way I have worked very effectively for many years.

First launch STM32CubeMX, configure pins, peripherals, and such. Then under project settings select Makefile or Cmake in lieu of STM32CubeIDE.

Use gcc-arm-none-eabi to compile the project (or cmake).

You can use OpenOCD along with arm-none-eabi-gdb for debuggins. Consider a Vim debugging plugin to flash and debug your target.

Fancy Vim customization

Consider setting up Vim LSP (language server protocol) to help find header files, and do code completion. This may work best with nvim.

There is a lot to this. You need to generate a compile_commands.json file. A tool like bear (bear -- make) or compiledb can do this. Then you need the LSP, perhaps coc.nvim nvim-lspconfig, or ccls/clangd.

These are all strange waters to dive into.


Have any comments? Questions? Drop me a line!