1.Undefined symbol SystemInit(未定义符号SystemInit)
新建项目并编译后遇到以下的错误:
..OutputLED.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f429_439xx.o).
错误分析:从括号里面的内容可以知道:这个错误在 startup_stm32f0xx.o 这个文件里面被提及到,所以我们只需要在工程里面找到对应的.s或者.c文件即可(此错误对应的文件为startup_stm32f429_439xx.s)。
这个文件是STM32的启动文件,在此文件中可以找到SystemInit所在:
此时可以发现:在startup_stm32f429_439xx.s文件中,调用了SystemInit这个函数,而这个函数在.s文件里面没有定义。
解决方法:
(1)在工程项目当中任意一个.c文件中加入SystemInit函数的定义,空函数即可。
void SystemInit()
{
//do nothing
}
(2)注释调用的代码段。注意这是汇编程序,注释用 “;”
SystemInit 是在使用main前做一些初始化工作,如果不需要官方的库,只是自己编写一些简单的应用,则可以把此函数禁掉。
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
; IMPORT SystemInit
; LDR R0, =SystemInit
; BLX R0
LDR R0, =__main
BX R0
ENDP
2.No such file or directory(没有这样的文件或目录)
在编译过程中遇到以下的错误:
D:Keil_v5ARMPACKKeilSTM32F1xx_DFP2.2.0DeviceIncludestm32f10x.h(483): error: #5: cannot open source input file "core_cm3.h": No such file or directory
..Userstm32f10x_it.c(26): error: #5: cannot open source input file "usart.h": No such file or directory
错误分析:这些错误是由于在工程里没有包含这些文件(换个说法就是在工程路径里找不到这些文件),所以解决这些错误的做法是把这些文件所在的路径包含进来。
解决方法:
在keil软件中:选择“花棒”--“c/c++”,按照下图操作将文件所在路径包含到项目里,重新编译
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』