Skip to main content
sarojj7
Associate II
May 24, 2020
Question

Undefined HAL symbols, in Keil

  • May 24, 2020
  • 2 replies
  • 1666 views

I have existing working code which uses uart and some GPIO functions. Its main.h has,

#include "ll_common.h", #include "stm32h7xx_ll_gpio.h", #include "stm32h7xx_ll_usart.h"

and few more ll headers.

Now I need to add I2C functionality to the code. I go through the code given at

en.stm32cubeh7_v1-7-0\STM32Cube_FW_H7_V1.7.0\Projects\STM32H743I-EVAL\Examples\I2C\I2C_EEPROM_fast_mode_plus\MDK-ARM, as the code uses HAL drivers , I make the following changes,

  1. Add

#include "stm32h7xx_hal.h"

#include "stm32h7xx_nucleo.h (in example its stm32h743i_eval.h)

2. Add USE_HAL_DRIVER to compiler per-proceesor symbols(it already has USE_FULL_LL_DRIVER)

3. I add stm32h7xx_hal.h, stm32h7xx_nucleo.h,stm32h7xx_hal_conf.h, stm32h7xx_nucleo_conf.h, stm32h7xx_nucleo_errno.h, stm32h7xx_hal_i2c.h, stm32h7xx_hal_i2c.c to the project.

4. I also confirm that in stm32h7xx_hal_conf.h , #define HAL_MODULE_ENABLED and all other relevant modules are enabled.

Even with all these, I am getting compilation error like

.\STM32H745I_Nucleo_CM7\Exe\STM32H745I_Nucleo_CM7.axf: Error: L6218E: Undefined symbol HAL_EXTI_GetHandle (referred from stm32h7xx_nucleo.o).

.\STM32H745I_Nucleo_CM7\Exe\STM32H745I_Nucleo_CM7.axf: Error: L6218E: Undefined symbol HAL_EXTI_IRQHandler (referred from stm32h7xx_nucleo.o).

.\STM32H745I_Nucleo_CM7\Exe\STM32H745I_Nucleo_CM7.axf: Error: L6218E: Undefined symbol HAL_EXTI_RegisterCallback (referred from stm32h7xx_nucleo.o).

and many more.... basically compiler is not able able to see any HAL symbols.

KEil Version:5.26.2.0

What am I missing ?

Also I am using NUCLEO-H745ZI-Q, but keil does not support this board. Can this be a possible reason?

I tried all that I possibly could, I am stuck.

Any help is appreciated. Thanks in advance.

This topic has been closed for replies.

2 replies

Tesla DeLorean
Guru
May 24, 2020

Ok, HEADER files describe interfaces, they don't typically contain the code required for linkage.

Need to add the library SOURCE files to get closure, ie

stm32h7xx_hal_exti.c

Try Keil 5.29

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
sarojj7
sarojj7Author
Associate II
May 24, 2020

Thanks for such prompt reply. I did add stm32h7xx_hal_exti.c, but still same undefined HAL symbol errors are coming.

Do I have to add other files like these. How do I know which files , I have add. Is there any document stating, the the code flow among HAL files ?

I have gone through the HAL and LL driver document but I think , what am missing is the dependency among HAL files and their behavior when LL files are used along with HAL files.

Piranha
Principal III
May 30, 2020

Those errors mean that stm32h7xx_hal_exti.c is still not added/compiled/linked properly.