×
单片机 > 单片机程序设计 > 详情

编写STM32项目遇到的报错

发布时间:2020-05-29 发布时间:
|

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++”,按照下图操作将文件所在路径包含到项目里,重新编译


关键字:STM32项目  报错  新建项目  编译

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些