2025-12-30 5:09 AM
So I have a board which I'm correctly using with threadX and TouchGFX.
I want to implement a function that calculates the FFT of a signal, but I'm having a hard time finding the CMSIS-DSP libraries.
I need to include the classic math library for ARM
#include "arm_math.h"
#include "arm_const_structs.h"But in cubeMX I'm finding various DSP libraries
what should I use?
Solved! Go to Solution.
2026-01-05 4:33 AM
Ok, so the issue has been fixed following this https://community.st.com/t5/stm32-mcus-embedded-software/quot-first-defined-here-quot-error-with-cmsis-dsp-1-15/td-p/601583
But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)
2025-12-30 6:16 AM
Does this help: How to integrate CMSIS-DSP libraries on a STM32 project ?
Also: Configuring DSP libraries on STM32CubeIDE ?
2026-01-05 3:24 AM
AHai @Andrew Neil
This helped a lot, thanks! The only thing that seems not to be explained is why I'm seeing a series of error "multiple definition of" "first defined here"
<my_project>/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c:318: multiple definition of `arm_biquad_cascade_df1_q15'; ./Drivers/DSP/Source/FilteringFunctions/FilteringFunctions.o:<my_project>/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c:318: first defined hereWhich one was I supposed to keep?
2026-01-05 4:33 AM
Ok, so the issue has been fixed following this https://community.st.com/t5/stm32-mcus-embedded-software/quot-first-defined-here-quot-error-with-cmsis-dsp-1-15/td-p/601583
But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)
2026-01-05 5:20 AM
> But I still don't understand what the difference is between the <library>.c and <library>F16.c (I think the F16 executes operations on 16bit floats and not 32bit floats)
Did you mean "Q15" here ? https://en.wikipedia.org/wiki/Q_(number_format)
The CMSIS libraries support this format for years now.
At least in the DSP Lib version I have (F0..F7), those source files are still named *q15.c and *q15.h.
2026-01-05 6:28 AM
No, I mean *F16.c
For instance, I'm seeing the file SupportFunctions.c and SupportFunctionsF16.c.
Deleting the SupportFunctions.c (and all the other .c without the F16) made the errors disappear
2026-01-05 6:44 AM
Funny ...
There is no such thing as a *F16.* source file anywhere in the versions I reviewed - which are admittedly a bit older (from 2014..15).
But the DSP Libs are created by ARM itself, not any vendor. You would have to ask them, or look up in the sources what that type refers to.
> Deleting the SupportFunctions.c (and all the other .c without the F16) made the errors disappear
Just add the source files you actually need.
I did a few FFT projects, and usually either copied the sources directly over into the project, or added them to the project "in place" as read-only source.
2026-01-05 6:53 AM
@Ozone wrote:But the DSP Libs are created by ARM itself, not any vendor.
Indeed.
@nico23 - see: https://arm-software.github.io/CMSIS_6/latest/DSP/index.html
@Ozone wrote:You would have to ask them, .
eg,
https://community.arm.com/support-forums/f/compilers-and-libraries-forum
https://community.arm.com/support-forums/f/keil-forum