simulink编程keil编译错误:XXX.axf: Error: L6218E: Undefined symbol getBuffPtr (referred from untitled_1.o).

#XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

MDK 报错:

keil报错问题:linking…
stm32f103.axf: Error: L6218E: Undefined symbol Time1_8_Init (referred from led.o).

分析问题:Undefined symbol Time1_8_Init,翻译过来就是:Time1_8_Init 这个符号没有被定义,小括号中的内容告诉你,是在 led.o 这个文件里面被提调用的,这个.o文件在工程里面是没有的,它是在编译过程中由.c文件生成的。所以我们只需要找到工程里面的.c文件即可,这里对应这个名字的就是 led.c 了。

在keil中仿照别人的程序写了RCC初始化的程序,编译后出现以下问题

.\obj\pro1.axf: Error: L6218E: Undefined symbol FLASH_PrefetchBufferCmd (referred from main.o).

.\obj\pro1.axf: Error: L6218E: Undefined symbol RCC_GetFlagStatus (referred from main.o).

.\obj\pro1.axf: Error: L6218E: Undefined symbol NVIC_SetVectorTable(referred from main.o).

等等一系列相似的问题,都是说该函数没定义,其实就是没包含到工程当中。
可能出现的情况
一、xxx.o对应的xxx.c文件里面使用了没有定义的xxxx(Undefined symbol xxxx),需要你在合适的地 方定义或者删除。
二、在xxx.h文件中没有申明该符号xxxx;
三、在xxx.c/h文件中未引用定义该符号xxxx的.H文件;
四、该符号xxxx已经定义过了,并且也正常引用了,但是在你的MDK工程里面没有把定义该符号的.c文件加载进来,具体操作如图:
————————————————
版权声明:本文为CSDN博主「小乐子说」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuandevelo/article/details/107227723
simulink编程keil编译错误:XXX.axf: Error: L6218E: Undefined symbol getBuffPtr (referred from untitled_1.o)._第1张图片
simulink编程keil编译错误:XXX.axf: Error: L6218E: Undefined symbol getBuffPtr (referred from untitled_1.o)._第2张图片

解决办法:

点击三个方块,

将stm32f10x_flash.c和stm32f10x_nvic.c添加进来,这些都是工程里的,当然你用软件自带的也行了。我的是:E:\ProgrameData\Keil STM32\pro1\lib\src。

再次编译就不会报错了。

总结,当出现类似问题时,原因很可能就是没添加这个函数所在的头文件。
在这里插入图片描述
在这里插入图片描述
参考:https://blog.csdn.net/weixin_42341666/article/details/103925185
我的c文件时再stm32—target包中找到的。目录是在包的这个位置:en.stm32-mat_target\addSrc\src\getBuffPtr.c

你可能感兴趣的:(嵌入式开发)