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