Невозможно использовать библиотеку CMSIS в Atollic - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь использовать функцию CFFT для моего микроконтроллера STM32 в Atollic TrueStudio. Но я не могу использовать ни одну из функций DSP. Я получаю ошибку - неопределенная ссылка на arm_cfft_f32 и неопределенная ссылка arm_cfft_sR_f32_len16. Я не знаю, в чем проблема, потому что это работает на Кейла. Что я делаю не так?

    #include "stm32f4xx.h"
    #include "arm_math.h"
    #include "arm_const_structs.h"
    #include "core_cm4.h"
    #include "math.h"
    #define TEST_LENGTH_SAMPLES 32
    float32_t ffttestip[TEST_LENGTH_SAMPLES]={0};
    static float32_t ffttestop[TEST_LENGTH_SAMPLES/2];
    /* Private macro */
    /* Private variables */
    /* Private function prototypes */
    /* Private functions */
    uint32_t fftSize = 16;
    uint8_t ifftFlag = 0;
    uint8_t doBitReverse = 1;

     int main(void)
    {
    int i = 0;
      i=15;
      i=pow(i,2);
      /**
      *  IMPORTANT NOTE!
      *  The symbol VECT_TAB_SRAM needs to be defined when building the project
      *  if code has been located to RAM and interrupts are used. 
      *  Otherwise the interrupt table located in flash will be used.
      *  See also the <system_*.c> file and how the SystemInit() function updates 
      *  SCB->VTOR register.  
      *  E.g.  SCB->VTOR = 0x20000000;  
      */

      /* TODO - Add your application code here */
      arm_cfft_f32(&arm_cfft_sR_f32_len16, ffttestip, ifftFlag, doBitReverse);
      /* Infinite loop */
    while(1);
}

РЕДАКТИРОВАТЬ - дополнительно я получаю следующую ошибку -

Info: Internal Builder is used for build
arm-atollic-eabi-g++ -o fftreal.elf Libraries\STM32F4xx_StdPeriph_Driver\src\misc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_adc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_can.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_crc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_aes.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_des.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_cryp_tdes.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dac.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dbgmcu.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dcmi.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_dma.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_exti.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_flash.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_gpio.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_md5.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_hash_sha1.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_i2c.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_iwdg.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_pwr.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rcc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rng.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_rtc.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_sdio.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_spi.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_syscfg.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_tim.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_usart.o Libraries\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_wwdg.o src\main.o src\startup_stm32f40xx.o src\stm32f4xx_it.o src\system_stm32f4xx.o src\tiny_printf.o -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -T../stm32f4_flash.ld -specs=nosys.specs -static -Wl,-cref,-u,Reset_Handler -Wl,-Map=fftreal.map -Wl,--gc-sections -Wl,--defsym=malloc_getpagesize_P=0x1000 -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group -specs=nano.specs 
src\main.o: In function `main':
E:\truestudio workspace\fftreal\Debug/..\src/main.cpp:70: undefined reference to `arm_rfft_f32'
collect2.exe: error: ld returned 1 exit status

1 Ответ

0 голосов
/ 01 мая 2018

Прежде всего удалите этот старый неподдерживаемый SPL.

Во-вторых, вам нужно добавить в ваш проект .c файлы, содержащие функции CMSIS DSP.

Наконец - ваша программа, как я вижу, не имеет ничего общего с C ++, так почему ваш проект установлен как C ++?

...