We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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