STM32CubeIDE
STM32CubeIDE is an IDE from STMicroelectronics specifically for the STM32 range of microcontrollers. It supports firmware development in C or C++. It integrates with STM32Cube.
Installation
The installer is approx. 685MiB.
Default directories (examples below shown for v1.3.0
):
Windows
Installation: C:\ST\STM32CubeIDE_1.3.0
All OSes
Workspace: <user home directory>/STM32CubeIDE/workspace_1.3.0
STM32Cube Repository: <user home directory>/STM32Cube/Repository
SEGGER J-Link drivers, ST_LINK drivers and ST_LINK server software is provided with the installation.
Default File Structure
Below shows the default directory/file structure for a STM32CubeIDE project:
The .ioc File
The .ioc
file contains information about the target microcontroller and the hardware configuration for your project.
Enabling peripherals via the .ioc
file generates MX_<peripheral_name>_Init()
functions in the main.c
file. HAL driver files are also provided for peripherals. They are written in a object-orientated way (e.g. every UART
related HAL function which take a pointer to the UART object as it’s first parameter).
Git Ignore File
C++ Projects
Confusingly, even if you specify the project as a “C++ Project” when creating it, you will be presented with main.c
file. You can rename this to main.cpp
to begin using C++ (this will cause arm-none-eabi-g++
to be called on main.cpp
rather than arm-none-eabi-gcc
, which will allow you to include C++ code).
The linker is called correctly regardless of the extension of main
--- arm-none-eabi-g++
will be called during the linking step.
However, when you change the peripheral configurations using the .ioc
file and re-generate code, it will also recreate the main.c
.