This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Error: L6218E. STM32f30x

Hello,

On the beggining i want to tell im new here, and im newbie with that stuff. Im studding computer technology and we got some subject where we are starting "fun" with keil etc. I wanted to make some easy project (done everything what my teacher said;p)and here we go:

.\lukiprojekt.axf: Error: L6218E: Undefined symbol assert_param (referred from stm32f30x_exti.o).

I dont know whats wrong. i was google my problem but without result. I would be greatfull if you would like to help me. Im using keil v5.

Regards,
Lukasz

  • Well within ST's model the assert_failed() normally gets added in main.c if USE_FULL_ASSERT is defined within the project, which might be done in stm32f30x_conf.h which also defines a void macro. Suggest you review some of the project templates ST supplies with it's libraries.

  • I dont know if understand you right but my project looks like that: www.iv.pl/.../35032049365597235999.jpg. I excluded in that files some errors.

  • www.iv.pl/images/35032049365597235999.jpg

  • So LOOK at some of the template projects, I can lead you to the water, but I can't make you drink.

    STM32F30x_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F30x_StdPeriph_Templates\MDK-ARM\Project.uvproj

    USE_STDPERIPH_DRIVER STM32F30X USE_STM32303C_EVAL

    STM32F30x_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F30x_StdPeriph_Templates\main.c

    ..
    #ifdef  USE_FULL_ASSERT
    
    /**
      * @brief  Reports the name of the source file and the source line number
      *         where the assert_param error has occurred.
      * @param  file: pointer to the source file name
      * @param  line: assert_param error line source number
      * @retval None
      */
    void assert_failed(uint8_t* file, uint32_t line)
    {
      /* User can add his own implementation to report the file name and line number,
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
    
      /* Infinite loop */
      while (1)
      {
      }
    }
    #endif
    ..
    

    STM32F30x_DSP_StdPeriph_Lib_V1.0.0\Project\STM32F30x_StdPeriph_Templates\stm32f30x_conf.h

    ..
    /* Uncomment the line below to expanse the "assert_param" macro in the
       Standard Peripheral Library drivers code */
    /* #define USE_FULL_ASSERT    1 */
    
    /* Exported macro ------------------------------------------------------------*/
    #ifdef  USE_FULL_ASSERT
    
    /**
      * @brief  The assert_param macro is used for function's parameters check.
      * @param  expr: If expr is false, it calls assert_failed function which reports
      *         the name of the source file and the source line number of the call
      *         that failed. If expr is true, it returns no value.
      * @retval None
      */
      #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
    /* Exported functions ------------------------------------------------------- */
      void assert_failed(uint8_t* file, uint32_t line);
    #else
      #define assert_param(expr) ((void)0)
    #endif /* USE_FULL_ASSERT */
    ..
    

  • haha thanks man. The solution was just to use right buton of mouse on main project in keil end use options->c/c++-> processor symbols define and just to add "USE_STM32303C_EVAL". Thanks:)

  • using USE_STDPERIPH_DRIVER solve the problem