加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Error: L6218E: Undefined symbol SystemInit

(2013-01-18 21:23:15)
标签:

杂谈

分类: STM32
led_blink.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f0xx.o).

     此问题错误提示已经十分清楚的告诉你错在哪里了,Undefined symbol SystemInit ,翻译过来就是:SystemInit 这个符号没有定义,随后的小括号告诉你了,是在 startup_stm32f0xx.o 这个文件里面被提及的,这个.o文件在工程里面并没有,它是一个在编译的时候根据.c/.s文件生成的。所以我们只需要找到工程里面的.s或者.c即可,这里对应这个名字的就是 startup_stm32f0xx.s了。

   在此文件里面可以找到SystemInit的所在:
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
     IMPORT  __main
     IMPORT  SystemInit
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP
   原来在复位中断服务函数里面,调用了SystemInit这个函数,而这个函数在.s文件里面没有定义。
   所以解决的办法有两个。
   1,在外部(其他任何.c文件里面)定义SystemInit这个函数。
   2,把   
           IMPORT  SystemInit              
                 LDR     R0, =SystemInit
                 BLX     R0
      这三句话注释掉。(不推荐)

SystemInit 是在使用main前做一些初始化工作,如果不需要官方的库,只是自己编写一些简单的应用,则可以把此函数禁掉。譬如创建工程时直接加入s文件,剩下的自己简单编程,此时就不要SystemInit。
 
在STM32库函数中 void SystemInit(void)主要用于初始化系统时钟。在system_stm32f10x.c这个文件中。
==================================================================================================

 
http://i.youku.com/veryarm    嵌入式学习视频  观看密码 veryarm.cn
http://www.veryarm.cn         嵌入式学习园地
http://veryarm.taobao.com     veryarm 嵌入式学习套件
 
 
VERYARM公众微信号                         VERYARM 论坛
http://s7/small/4d185423tx6BCHeQ9ue56&690L6218E: Undefined symbol SystemInit" TITLE="Error: L6218E: Undefined symbol SystemInit" />     http://s16/small/4d185423tx6BCHfgFtlcf&690L6218E: Undefined symbol SystemInit" TITLE="Error: L6218E: Undefined symbol SystemInit" />


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有