网站建设师要求,制作网站价格,有没有99块钱做网站,室内设计师35岁后的出路MDK报错#xff1a;Undefined symbol assert_failed报错解决策略 #x1f3af;#x1fa95;在全网搜索相关MDK编译报错:Error: L6218E: Undefined symbol assert_param (referred from xxx.o). ✨有些问题看似很简单#xff0c;可能产生的问题是由于不经意的细节原因导致。… MDK报错Undefined symbol assert_failed报错解决策略 在全网搜索相关MDK编译报错:Error: L6218E: Undefined symbol assert_param (referred from xxx.o). ✨有些问题看似很简单可能产生的问题是由于不经意的细节原因导致。引起报错的问题有很多种可能没有放之四海皆准的解决方案。 提供的解决问题的可能方案一添加宏定义USE_STDPERIPH_DRIVER 提供的解决问题的可能方案二没有将相对应的驱动头文件(.h)路径包含进来或者是源文件.c添加到工程中。 这里针对的是具体的驱动文件或驱动头文件。 提供的解决问题的可能方案三在main.c文件中补充下面的void assert_failed()断言报错函数
#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 CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,tex: printf(Wrong parameters value: file %s on line %d\r\n, file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */✨很多外部导入的工程源码添加完标准库文件后编译报此错误往往可能是忽略标准库驱动文件中定义了此断言assert_failed函数却没有写实现的地方才会出现有调用assert_param宏的驱动文件中报错。 /* Exported macro ------------------------------------------------------------*/
#define USE_FULL_ASSERT#ifdef USE_FULL_ASSERT/*** brief The assert_param macro is used for functions 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)0U : assert_failed((uint8_t *)__FILE__, __LINE__))/* Exported functions ------------------------------------------------------- */void assert_failed(uint8_t *file, uint32_t line);
#else#define assert_param(expr) ((void)0U)
#endif /* USE_FULL_ASSERT */