"Src\main.h:4:10: fatal error: stm32f4xx_hal.h: No such file or directory" error with STM L432KC on STM32Cube Framework

I’m trying to build the tutorial project at https://docs.platformio.org/en/stable/tutorials/ststm32/stm32cube_debugging_unit_testing.html#tutorial-stm32cube-debugging-unit-testing, using Platformio for vscode. I’ve tried it for the F401RE and it builds without error, but with my L432KC, vscode highlights

cannot open source file "stm32f4xx_hal.h"

and when I try to build it throws

Processing nucleo_l432kc (platform: ststm32; board: nucleo_l432kc; framework: stm32cube)
--------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/nucleo_l432kc.html
PLATFORM: ST STM32 (16.1.0) > ST Nucleo L432KC
HARDWARE: STM32L432KCU6 80MHz, 64KB RAM, 256KB Flash
DEBUG: Current (stlink) On-board (stlink) External (blackmagic, cmsis-dap, jlink)
PACKAGES:
 - framework-stm32cubel4 @ 1.17.0
 - tool-ldscripts-ststm32 @ 0.2.0
 - toolchain-gccarmnoneeabi @ 1.70201.0 (7.2.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 53 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_adc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_adc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_can.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_comp.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_cortex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_crc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_crc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_cryp.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_cryp_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dac.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dac_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dcmi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dfsdm.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dfsdm_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dma.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dma2d.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dma_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_dsi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_exti.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_firewall.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_flash.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_flash_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_flash_ramfunc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_gfxmmu.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_gpio.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_hash.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_hash_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_hcd.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_i2c.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_i2c_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_irda.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_iwdg.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_lcd.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_lptim.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_ltdc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_ltdc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_mmc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_mmc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_nand.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_nor.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_opamp.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_opamp_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_ospi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pcd.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pcd_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pka.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pssi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pwr.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_pwr_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_qspi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rcc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rcc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rng.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rng_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rtc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_rtc_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_sai.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_sai_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_sd.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_sd_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_smartcard.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_smartcard_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_smbus.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_smbus_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_spi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_spi_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_sram.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_swpmi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_tim.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_tim_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_tsc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_uart.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_uart_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_usart.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_usart_ex.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_hal_wwdg.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_adc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_comp.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_crc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_crs.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_dac.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_dma.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_dma2d.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_exti.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_fmc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_gpio.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_i2c.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_lptim.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_lpuart.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_opamp.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_pka.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_pwr.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_rcc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_rng.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_rtc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_sdmmc.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_spi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_swpmi.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_tim.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_usart.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_usb.o
Compiling .pio\build\nucleo_l432kc\FrameworkHALDriver\Src\stm32l4xx_ll_utils.o
Compiling .pio\build\nucleo_l432kc\src\main.o
Compiling .pio\build\nucleo_l432kc\FrameworkCMSISDevice\gcc\startup_stm32l432xx.o
Compiling .pio\build\nucleo_l432kc\FrameworkCMSISDevice\system_stm32l4xx.o
In file included from src\main.c:1:0:
src\main.h:4:10: fatal error: stm32f4xx_hal.h: No such file or directory

***********************************************************************
* Looking for stm32f4xx_hal.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:stm32f4xx_hal.h"
* Web  > https://registry.platformio.org/search?q=header:stm32f4xx_hal.h
*
***********************************************************************

 #include "stm32f4xx_hal.h"
          ^~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\nucleo_l432kc\src\main.o] Error 1

My platformio.ini file is

[env:nucleo_l432kc]
platform = ststm32
board = nucleo_l432kc
framework = stm32cube

…So you’re building for board = nucleo_l432kc. That means you must include stm32l4xx_hal.h, not stm32f4xx_hal.h. It’s pointless to try and include the F4 HAL for a L4 chip.

If you want the project to work in both cases, you can do

#if defined(STM32F4xx) || defined(STM32F4)
#include "stm32f4xx_hal.h"
#elif defined(STM32L432xx)
#include "stm32l4xx_hal.h"
#else
#error "Unknown chip"
#endif

You can look at the available macros in the board definitions, e.g.,

or add your own ones in the platformio.ini for each environment using build_flags.

1 Like