Makefile options
By default, the STM32-base project requires very little configuration. There are only two required variables that should be set in a project’s makefile. In addition to these two variables, there are many more variables that can be set to configure the way STM32-base works.
This page provides a list of all variables that can be set in a project’s makefile to configure STM32-base.
Required variables
DEVICE - required
The DEVICE
variable must be set so that the main makefile can figure out which files should be included. For a list of possible values, see the device name mapping cheatsheet.
FLASH - required
The FLASH
variable must be set to define where in the FLASH memory the binary should be flashed. This value is usually set to 0x08000000
.
Configurable paths and folders
STM32_BASE_PATH
Defaults to: ./STM32-base
The STM32_BASE
variable can be set to define a non-standard location for the STM32-base repository folder.
STM32_CUBE_PATH
Defaults to: ./STM32-base-STM32Cube
The STM32_CUBE
variable can be set to define a non-standard location for the STM32-base-STM32Cube repository folder.
TOOLCHAIN_PATH
Defaults to: ../../tools/bin
The TOOLCHAIN_PATH
variable can be set to define a non-standard location for the toolchain. With setting this variable, it is also possible to use different versions of the toolchain for different projects. By default, this variable is set to use the tools located at the in the setup guide recommended place. To use the globally installed tools, set the TOOLCHAIN_PATH
to undefined in your projects makefile like this: TOOLCHAIN_PATH =
.
TOOLCHAIN_PREFIX
Defaults to: arm-none-eabi-
The TOOLCHAIN_PREFIX
variable can be set to define the prefix used in toolchain application names. For example: GCC is invoked as arm-none-eabi-gcc
. However, if you set this variable to my-prefix-
, it will be invoked as my-prefix-gcc
.
BIN_FOLDER
Defaults to: ./bin
The BIN_FOLDER
variable can be set to specify another target folder for the compiled binary.
OBJ_FOLDER
Defaults to: ./obj
The OBJ_FOLDER
variable can be set to specify another target folder for the object files.
SRC_FOLDER
Defaults to: ./src
The SRC_FOLDER
variable can be set to specify another target folder for the source files to include.
INC_FOLDER
Defaults to: ./inc
The INC_FOLDER
variable can be set to specify another target folder for the include (header) files.
ELF_FILE_NAME
Defaults to: stm32_executable.elf
The ELF_FILE_NAME
variable can be set to specify another name for the ELF output file. Note that the name also includes the file extention.
BIN_FILE_NAME
Defaults to: stm32_bin_image.bin
The BIN_FILE_NAME
variable can be set to specify another name for the binary output file. Note that the name also includes the file extention.
OBJ_FILE_NAME
Defaults to: startup_$(MAPPED_DEVICE).o
The OBJ_FILE_NAME
variable can be set to specify another name for the startup object file. Note that the name also includes the file extention.
Compiler flags
CPPFLAGS and CXXFLAGS
The CPPFLAGS
and CXXFLAGS
variables can be used to pass arguments to the arm-none-eabi-gcc
call. For more information on the default value of this variable, see the common.mk
file.
SRC
Defaults to: $(SRC_FOLDER)/*.c
Other source locations can be added to this variable in addition to the default value.
CMSIS and HAL support
USE_ST_CMSIS
Defaults to: undefined
The USE_ST_CMSIS
variable should be set when using the CMSIS located in the STM32-base-STM32Cube repository.
USE_ST_HAL
Defaults to: undefined
The USE_ST_HAL
variable should be set when using the HAL located in the STM32-base-STM32Cube repository. When this variable is set, the makefile act like the USE_ST_CMSIS
is also set.