LPC1788启动文件中是否缺少SystemInit功能?我在哪里可以找到它?

时间:2014-09-04 11:44:19

标签: c embedded keil

我正在使用带有Keil4的LPC1788微控制器,当我创建项目时,Keil添加了一个名为“startup_LPC177x_8x.s”的文件。在这个文件的一个阶段,IMPORT命令试图导入SystemInit,但是当我编译时,我得到一个错误如下:

 compiling main.c...
 main.c(6): warning:  #1-D: last line of file ends without a newline
 linking...
 project_1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_lpc177x_8x.o).
 Target not created

这段代码如下:

 Reset_Handler   PROC
                 EXPORT  Reset_Handler             [WEAK]
                 IMPORT  SystemInit
                 IMPORT  __main
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

我在项目中包含了头文件“lpc177x_8x.h”。

请指导我的朋友......我是Keil的新手...非常感谢。

2 个答案:

答案 0 :(得分:0)

此文件中的IMPORT符号 - 在其他地方定义。

它可能位于名为system_LPC177x_8x.c或类似的文件中;它可能需要为您的项目定制设置PLL并初始化外部存储器接口和其他时钟相关功能。

如果您在创建项目时要求包含启动文件,它通常会自动包含在您的项目中;否则它将在Keil ARM-MDK安装中的CMSIS目标特定支持文件夹中,在这种情况下我猜:CMSIS\CM3\DeviceSupport\NXP\LPC17xx\或类似,CMSIS版本之间的确切目录结构已经改变。

答案 1 :(得分:0)

取决于你安装Keil的位置。

这是我电脑中的地址:

D:\ Program Files \ keil \ ARM \ INC \ NXP \ LPC17xx

(这里包含您使用的头文件)

D:\ Program Files \ keil \ ARM \ Startup \ NXP \ LPC17xx

(这里包含您使用的启动文件,SystemInit函数在system_LPC13xx.c中定义)