打印
[STM32F7]

编写STM32项目遇到的报错

[复制链接]
75|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Undefined symbol SystemInit(未定义符号SystemInit)

新建项目并编译后遇到以下的错误:

..\Output\LED.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文件里面没有定义。

使用特权

评论回复
沙发
和下土|  楼主 | 2024-2-27 19:39 | 只看该作者
解决方法:

(1)在工程项目当中任意一个.c文件中加入SystemInit函数的定义,空函数即可。
void SystemInit()
{
        //do nothing
}

使用特权

评论回复
板凳
和下土|  楼主 | 2024-2-27 19:39 | 只看该作者
(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

使用特权

评论回复
地板
和下土|  楼主 | 2024-2-27 19:39 | 只看该作者
No such file or directory(没有这样的文件或目录)

在编译过程中遇到以下的错误:

D:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.2.0\Device\Include\stm32f10x.h(483): error:  #5: cannot open source input file "core_cm3.h": No such file or directory

..\User\stm32f10x_it.c(26): error:  #5: cannot open source input file "usart.h": No such file or directory

错误分析:这些错误是由于在工程里没有包含这些文件(换个说法就是在工程路径里找不到这些文件),所以解决这些错误的做法是把这些文件所在的路径包含进来。

使用特权

评论回复
5
和下土|  楼主 | 2024-2-27 19:39 | 只看该作者
解决方法:

在keil软件中:选择“花棒”--“c/c++”,按照下图操作将文件所在路径包含到项目里,重新编译

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

938

帖子

0

粉丝