Shows how a auto-generated STM32CubeMX project can be converted to be compiled with PlatformIO
- Selected the board NUCLEO-H723ZG, initialize all peripherals in default mode
- Activate Middleware -> FreeRTOS -> CMSIS_V2
- Change SYS -> Timebase Source to "TIM2" (recommended since FreeRTOS uses SysTick)
- Generate code for STM32CubeIDE, folder structure "advanced"
- Create blank PlatformIO project for NUCLEO-H723ZG
- Copy
Core\Inc\*
from STM32Cube project toinclude\*
- Copy
Core\Src\*
from STM32Cube project tosrc\*
- Copy
Middlewares\Third_Party\FreeRTOS
folder intolib
- Copy
STM32H723ZGTX_FLASH.ld
to the root of the PIO project - Adapt
platformio.ini
to the following
[env:nucleo_h723zg]
platform = ststm32
board = nucleo_h723zg
framework = stm32cube
; select linker file generated by CubeMX
board_build.ldscript = STM32H723ZGTX_FLASH.ld
; make build system use our HAL config file
board_build.stm32cube.custom_config_header = yes
; force inclusion of lib/FreeRTOS
lib_deps = FreeRTOS
; needed compiler flags to
; correctly build the port assembly files
; and add freertos subfolders to include path
build_flags =
-mfpu=fpv4-sp-d16
-mfloat-abi=softfp
-Ilib/FreeRTOS/include
-Ilib/FreeRTOS/CMSIS_RTOS_V2
-Ilib/FreeRTOS/portable/GCC/ARM_CM4F
-Iinclude
; link FreeRTOS as objectf files, not as
; archives. otherwise weak ISR functions
; don't get linked properly!
lib_archive = no
; fix for RAM size / initial SP.
; see https://community.platformio.org/t/arm-versus-thumb/23540/
; actually **not** needed because we have selected a fixed linkerfile!!
;board_upload.maximum_ram_size = 131072
Note:
- This conversion process and the needed build flags are nothing new
- outlined in many forum threads
- automatic conversions tools like https://github.com/ussserrr/stm32pio exist that do the exact same thing
board_build.stm32cube.custom_config_header
is needed, the defaultstm32h7xx_hal_conf.h
supplied by PlatformIO declares a 25MHz HSE input frequency when the Nucleo board has a 8MHz one. Alternatively, add-DHSE_VALUE=8000000UL
to thebuild_flags
.- No need to copy
Core\Startup
, PlatforrmIO already has the startup file and compiles it in. - same goes for
Drivers\CMSIS
andDrivers\STM32H7xx_HAL_Driver