Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


Contradictory Warnings.

My application has an automatic gain control that needs to be able to change the SDADC gain on the fly. Gain change can only be done when the SDADC is in init mode. To get the SDADC in init mode, and exit from it, there are these HAL functions:

SDADC_EnterInitMode()
SDADC_ExitInitMode()

Which are in file stm32f3xx_hal_sdadc.c. Unfortunately these are private functions so they are missing from file stm32f3xx_hal_sdadc.h. I cannot access them. So I copied these functions, and the macros they use, into a file I added to the project. I append the characters “_pub” to their names so they can be differentiated from the STM32CubeMX generated functions.

When I build this I get these seemingly contradictory warnings:

Description	Resource	Path	Location	Type
'SDADC_EnterInitMode_pub' declared 'static' but never defined [-Wunused-function]	stm32f3xx_hal_pub.h	/TEC Driver SW4STM32 Configuration/TEC/Inc	line 13	C/C++ Problem
'SDADC_EnterInitMode_pub' defined but not used [-Wunused-function]	stm32f3xx_hal_pub.c	/TEC Driver SW4STM32 Configuration/TEC/Src	line 35	C/C++ Problem
'SDADC_EnterInitMode_pub' used but never defined	stm32f3xx_hal_pub.h	/TEC Driver SW4STM32 Configuration/TEC/Inc	line 13	C/C++ Problem
'SDADC_ExitInitMode_pub' declared 'static' but never defined [-Wunused-function]	stm32f3xx_hal_pub.h	/TEC Driver SW4STM32 Configuration/TEC/Inc	line 14	C/C++ Problem
'SDADC_ExitInitMode_pub' defined but not used [-Wunused-function]	stm32f3xx_hal_pub.c	/TEC Driver SW4STM32 Configuration/TEC/Src	line 61	C/C++ Problem
'SDADC_ExitInitMode_pub' used but never defined	stm32f3xx_hal_pub.h	/TEC Driver SW4STM32 Configuration/TEC/Inc	line 14	C/C++ Problem

The first warning shows that SDADC_EnterInitMode_pub() is declared but never defined. But the next warning shows it is defined but not used. And finally the line after that shows it used but never defined. The lines that follow shows it to be all the same for SDADC_ExitInitMode_pub.

What could account for these contradictions? What has gone wrong here?

The processor is an STM32F373.

The files I created to add these functions to the project are attached.

France

Hi,

I think all your problems come from copy-pasting existing code without looking at what you are copying: you should suppress the static definitions in all the _pub declarations and definitions (in the .c and .h files you created) and it should work.

In fact the first warning says that you define SDADC_EnterInitMode_pub as a static function in stm32f3xx_hal_pub.h (that you obviously include in one of your code files); the second say that you define it, always as static, probably by including stm32f3xx_hal_pub.h, in stm32f3xx_hal_pub.c, but never use it in this file (quite normal indeed for an extern function, but not for a static function) and the third one says that, in some source file, you included stm32f3xx_hal_pub.h and try to use SDADC_EnterInitMode_pub, but as this file was not stm32f3xx_hal_pub.c it does not include any definition for this static function.

All this is due to overlooking the static keyword: when used for some global object, it restricts its visibility to the current compilation unit (the main .c file and the included files); this symbol will not be visible by other compile units.

Bernard (Ac6)


 

Newest Forum Posts

  1. Монтаж камина с грилем в Москве - установка и барбекю by KpddomErorb, 2025-05-10 18:28
  2. SPI on Nucleo_STMH533RE by royjamil, 2025-05-04 20:13
  3. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-25 07:37
  4. SPI on Nucleo_STMH533RE by royjamil, 2025-03-23 11:31
  5. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-23 09:33
  6. Configuring DMA for ADC in SW? by sam.hodgson, 2025-03-04 12:58
  7. Build a project in "release" mode by info@creosrl.it, 2025-02-20 18:12
  8. Build a project in "release" mode by info@creosrl.it, 2025-02-20 17:05
  9. Build a project in "release" mode by tang, 2025-02-20 10:36
  10. Build a project in "release" mode by info@creosrl.it, 2025-02-19 17:35

Last-Modified Blogs