Ошибки после смены компилятора - PullRequest
0 голосов
/ 02 августа 2020

Я использую Keil, и я хотел использовать библиотеку DSP. Я загружаю компилятор G CC и меняю компилятор на G CC здесь: Project -> Manage -> Components, Environment -> Folder / Extensions Tab. Он спрашивает меня: введите здесь описание изображения

Я согласился, через 1 минуту я вернулся к своему исходному компилятору. Мне нужно было переопределить все пути к моим библиотекам. И все же после сборки у меня 13 ошибок:

Rebuild started: Project: FFT - Tutorial
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Rebuild target 'FFT - Tutorial'
assembling startup_stm32l476xx.s...
compiling main.c...
../Src/main.c(98): error:  #254: type name is not allowed
    for (int32_t i= 0 ; i < SAMPLES ; i+=2)
../Src/main.c(98): error:  #65: expected a ";"
    for (int32_t i= 0 ; i < SAMPLES ; i+=2)
../Src/main.c(98): error:  #20: identifier "i" is undefined
    for (int32_t i= 0 ; i < SAMPLES ; i+=2)
../Src/main.c(145): error:  #254: type name is not allowed
        for(int16_t i=0; i<SAMPLES/2; i++)
../Src/main.c(145): error:  #65: expected a ";"
        for(int16_t i=0; i<SAMPLES/2; i++)
../Src/main.c: 0 warnings, 5 errors
compiling stm32l4xx_hal.c...
compiling stm32l4xx_hal_i2c_ex.c...
compiling stm32l4xx_it.c...
compiling stm32l4xx_hal_tim_ex.c...
compiling stm32l4xx_hal_tim.c...
compiling stm32l4xx_hal_msp.c...
compiling stm32l4xx_hal_uart_ex.c...
compiling stm32l4xx_hal_rcc.c...
compiling stm32l4xx_hal_uart.c...
compiling stm32l4xx_hal_flash.c...
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(118): error:  #29: expected an expression
  FLASH_ProcessTypeDef pFlash = {.Lock = HAL_UNLOCKED, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(119): error:  #29: expected an expression
                                 .ErrorCode = HAL_FLASH_ERROR_NONE, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(120): error:  #29: expected an expression
                                 .ProcedureOnGoing = FLASH_PROC_NONE, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(121): error:  #29: expected an expression
                                 .Address = 0U, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(122): error:  #29: expected an expression
                                 .Bank = FLASH_BANK_1, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(123): error:  #29: expected an expression
                                 .Page = 0U, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(124): error:  #29: expected an expression
                                 .NbPagesToErase = 0U, \
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c(125): error:  #29: expected an expression
                                 .CacheToReactivate = FLASH_CACHE_DISABLED};
../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c: 0 warnings, 8 errors
compiling stm32l4xx_hal_i2c.c...
compiling stm32l4xx_hal_rcc_ex.c...
compiling stm32l4xx_hal_flash_ramfunc.c...
compiling stm32l4xx_hal_flash_ex.c...
compiling stm32l4xx_hal_gpio.c...
compiling stm32l4xx_hal_pwr.c...
compiling stm32l4xx_hal_dma_ex.c...
compiling stm32l4xx_hal_dma.c...
compiling stm32l4xx_hal_pwr_ex.c...
compiling stm32l4xx_hal_cortex.c...
compiling stm32l4xx_hal_exti.c...
compiling system_stm32l4xx.c...
".\FFT - Tutorial.axf" - 13 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:02

Что я забыл настроить? (Я не добавил свой код, потому что это не имело значения для моей проблемы, он работал отлично до того, как я изменил свой компилятор)

Спасибо

1 Ответ

0 голосов
/ 03 августа 2020

Я полагаю, что когда вы вернулись к настройкам по умолчанию, компилятор вернулся к использованию стандарта ISO C90. Согласно онлайн-руководству , параметр --c90, который включает только C90 и некоторые расширения ARM, является настройкой по умолчанию.

Вы пытаетесь скомпилировать код, который использует функции которые были частью C более двух десятилетий, но не являются частью C90. Приведенные вами ошибки относятся к нескольким из этих функций: объявление локальных переменных в операторе for и нестандартная инициализация с использованием «назначенных инициализаторов» для агрегированных типов данных.

По-видимому, компилятор Keil вполне способен скомпилировать язык C. Вам просто нужно указать опцию --c99. (Я не знаю, где вам нужно разместить эту конфигурацию, но я уверен, что вы сможете ее найти.)

...