MDK调试错误之assert_failed

Undefined symbol assert_failed (referred from dma.o).

链接过程中出现assert_param函数未定义的错误

解决方法:

     在Options->C/C++->preprocessor Symboles有Define:项中输入USE_STDPERIPH_DRIVER,重新编译链接,无警告无错误。

     或其实,出现这种现象是由于你使用的main文件模板时将以下的函数删掉了!所以直接加上相应的函数就OK!

      

 1 #ifdef  USE_FULL_ASSERT
 2  /**
 3    * @brief  Reports the name of the source file and the source line number
 4    *   where the assert_param error has occurred.
 5    * @param file: pointer to the source file name
 6    * @param line: assert_param error line source number
 7    * @retval : None
 8    */
 9  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
10  /* Exported functions ------------------------------------------------------- */
11    void assert_failed(uint8_t* file, uint32_t line);
12  #else
13    #define assert_param(expr) ((void)0)
14  #endif

 


  

原文地址:https://www.cnblogs.com/Karma-wjc/p/4023065.html