代码之家  ›  专栏  ›  技术社区  ›  Som

使用cmsis库中的fft例程时,引用未定义

  •  2
  • Som  · 技术社区  · 7 年前

    我试图在粒子光子的应用程序代码中使用fft函数。我已成功将我的库链接到Cortex M3的cmsis预构建库。然而,当我调用实际的fft函数时:

    arm_rfft_q31( &rfftStruct, buffer, buffer); // in-place fft 
    

    生成失败,引用未定义:

    /u/susom/cmsis-integ/CMSIS/Lib/libarm_cortexM3l_math.a(arm_cfft_q31.o): In function `arm_cfft_q31':
    /u/susom/cmsis-integ/CMSIS/DSP_Lib/TransformFunctions/arm_cfft_q31.c:139: undefined reference to `arm_bitreversal_32'
    

    arm\u BitReversion\u 32恰好是在中的汇编中实现的例程 enter link description here

    关于如何克服这个问题的任何想法。

    1 回复  |  直到 7 年前
        1
  •  0
  •   user50619    3 年前

    项目中有两个库条目 模式窗口(仅当您在eclipse中选择了项目时可用 然后您可以从菜单项目的属性中进行设置)。

    其中一个似乎是化妆品。你需要一个在建的 在链接器部分。

    Eclipse有时似乎会随机删除这个条目,说得委婉一点 这是毫无帮助的。

    打开项目属性->C/C++构建->设置->MCU GCC链接器->库:

    添加库(顶部库) “arm\u cortexM4lf\u数学”

    不要把“.a”放在末尾,也不要把“lib”放在开头(你会以为他们会让regex保护它,但不会) 路径: 像这样的 “${workspace\u loc://${ProjName}/middleware/ST/ARM/DSP/Lib}”

    顺便说一句:使用CUBEMX加载DSP库,并记住勾选非常有用的“启用”框,否则它将无法工作。