AnsweredAssumed Answered

Errors compiling with Keil V5 (project generated with simulink STM32-MAT)

Question asked by Billie1123 on Apr 29, 2015
Latest reply on May 10, 2015 by Billie1123
Hello,

I am having troubles trying to get any simple project to work when I create it with the "Target Support Package - STM32 Adapter" toolbox provided by STM for Simulink.

For example, I followed the steps described in this video to program a discovery board using Simulink, STM32cubeMX and Keil toolchain.

I just load my simulink blank model, configure the setup with my cubeMX .ioc file with the port configuration and link one input with an output, as simple as that.

The problem comes when I compile the proyect from Keil. I got this log:

Build target 'BLINK Configuration'
compiling system_stm32f4xx.c...
compiling main.c...
..\Src\main.c(126): warning:  #111-D: statement is unreachable
    untitled_initialize();
..\Src\main.c(136): error:  #94-D: the size of an array must be greater than zero
        OverrunFlags[0] = true;
..\Src\main.c(136): error:  #77-D: this declaration has no storage class or type specifier
        OverrunFlags[0] = true;
..\Src\main.c(136): error:  #147: declaration is incompatible with "boolean_T OverrunFlags[1]" (declared at line 69)
        OverrunFlags[0] = true;
..\Src\main.c(136): warning:  #520-D: initialization with "{...}" expected for aggregate object
        OverrunFlags[0] = true;
..\Src\main.c(139): warning:  #1295-D: Deprecated declaration untitled_step - give arg types
        untitled_step();
..\Src\main.c(139): error:  #260-D: explicit type is missing ("int" assumed)
        untitled_step();
..\Src\main.c(139): error:  #147: declaration is incompatible with "void untitled_step(void)" (declared at line 71 of "..\untitled\Inc\untitled.h")
        untitled_step();
..\Src\main.c(144): error:  #94-D: the size of an array must be greater than zero
        OverrunFlags[0] = false;
..\Src\main.c(144): error:  #77-D: this declaration has no storage class or type specifier
        OverrunFlags[0] = false;
..\Src\main.c(144): error:  #147: declaration is incompatible with "boolean_T OverrunFlags[1]" (declared at line 136)
        OverrunFlags[0] = false;
..\Src\main.c(144): error:  #148: variable "OverrunFlags" has already been initialized
        OverrunFlags[0] = false;
..\Src\main.c(144): warning:  #520-D: initialization with "{...}" expected for aggregate object
        OverrunFlags[0] = false;
..\Src\main.c(145): error:  #169: expected a declaration
      }
..\Src\main.c(245): warning: At end of source:  #12-D: parsing restarts here after previous syntax error
..\Src\main.c(50): error:  #114: function "MX_GPIO_Init" was referenced but not defined
  static void MX_GPIO_Init(void);
..\Src\main.c(69): warning:  #550-D: variable "OverrunFlags" was set but never used
  static boolean_T OverrunFlags[1];
..\Src\main.c(75): warning:  #550-D: variable "remainAutoReloadTimerLoopVal_S" was set but never used
  static uint32_t remainAutoReloadTimerLoopVal_S = 1;
..\Src\main.c: 7 warnings, 11 errors
compiling stm32f4xx_hal_msp.c...
compiling stm32f4xx_it.c...
assembling startup_stm32f407xx.s...
compiling stm32f4xx_hal_rcc.c...
compiling stm32f4xx_hal_dma.c...
compiling stm32f4xx_hal_rcc_ex.c...
compiling stm32f4xx_hal_cortex.c...
compiling stm32f4xx_hal_gpio.c...
compiling stm32f4xx_hal_pwr_ex.c...
compiling stm32f4xx_hal_flash_ex.c...
compiling stm32f4xx_hal_pwr.c...
compiling stm32f4xx_hal_flash_ramfunc.c...
compiling stm32f4xx_hal_flash.c...
compiling stm32f4xx_hal.c...
compiling untitled.c...
..\untitled\Src\untitled.c(50): warning:  #188-D: enumerated type mixed with another type
    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, untitled_B.GPIO_Read);
..\untitled\Src\untitled.c: 1 warning, 0 errors
"BLINK Configuration\BLINK Configuration.axf" - 11 Error(s), 8 Warning(s).
Target not created.
Build Time Elapsed:  00:00:25

The kind of errors look like there is something wrong with the automatic generation of the code.

I have been able to load succesfully some examples that I downloaded from the Keil toolchain.

I am using the latest version of the toolchain, Keil V5 and the pack for my controller is updated. (In the video a previous version of Keil is used, but it should make no difference since my controller is still fully supported).

I even reinstalled all the programs but still got the same result.

In the video I attached before, the user only makes sure that the port is switched to SW and also that there is a flash loader set. I also tried following the steps for known problems wich appear at the bottom of the Readme file located, in my case, in C:/MATLAB/STM32-MAT/STM32/Readme.html. But neither erasing the " Configuration" string nor completing the Define statement worked for me. In fact I always got the same log.

Any idea about where can be the problem? I followed the video step by step and the rest of settings in my computer are as default.

Outcomes