LPC2132学习中遇到的错误1

发布者:Tapir最新更新时间:2016-01-22 来源: eefocus关键字:LPC2132 手机看文章 扫描二维码
随时随地手机看文章
自己写了一个头文件LCD.H,在其中定义了如下的全局变量:
const int8 NoCheckBusy = 0;
const int8 CheckBusy = 1;
 
const int32 LCD_RS = 1<<4;
const int32 LCD_RW = 1<<5;
const int32 LCD_EN = 1<<6;
const int32 LCD_DATA = 0xff<<7;
 
在c文件lcd.c和main.c中都要用到,但是在编译的时候出现如下的问题:
Error: L6200E: Symbol NoCheckBusy multiply defined (by main.o and lcd.o).
Error: L6200E: Symbol LCD_RS multiply defined (by main.o and lcd.o).
 
 
L6200E: Symbol multiply defined (by and ).
There are two common examples where this occurs:
 1) Symbol __semihosting_swi_guard multiply defined (by use_semi.o and use_no_semi.o).
This error is reported when functions that use semihosting SWIs are linked in from the C library, in the presence of the __use_no_semihosting_swi guard.  See the ADS 1.2 Compilers and Libraries Guide, section 4.2.2, "Building an application for a nonsemihosted environment" and ADS 1.2 Developer Guide, Section 6.10.1, "Linker error __semihosting_swi_guard".
To resolve this, you must provide your own implementations of these C library functions.
The ADS 1.2 Examplesembedded directory contains examples of how to re-implement some of the more common SWI-using functions - see the file retarget.c.
To identify which SWI-using functions are being linked-in from the C libraries:
1. Link with 'armlink -verbose -errors err.txt'
2. Search err.txt for occurrences of '__I_use_semihosting_swi'
For example:
:
Loading member sys_exit.o from c_a__un.l.
              reference :  __I_use_semihosting_swi
              definition:  _sys_exit
:
This shows that the SWI-using function _sys_exit is being linked-in from the C library.  To prevent this, you will need to provide your own implementation of this function.
 2) Symbol __stdout multiply defined (by retarget.o and stdio.o).
This means that there are two conflicting definitions of __stdout present – one inretarget.o, the other in stdio.o.  The one in retarget.o is your own definition.  The one in stdio.o is the default implementation, which was probably linked-in inadvertently.
stdio.o contains a number symbol definitions and implementations of file functions like fopen, fclose, fflush, etc.  stdio.o is being linked-in because it satisfies some unresolved references.
To identify why stdio.o is being linked-in, you must link with the linker's "verbose" switch, e.g.:
     armlink [... your normal options...] -verbose -errors err.txt
Then study err.txt, so see exactly what the linker is linking-in, from where, and why.
To move forward, the user may have to either:
- Eliminate the calls like fopen, fclose, fflush, etc, or
- Re-implement the _sys_xxxx family of functions.
 See the ADS 1.2 Compilers and Libraries Guide, section 4.10, "Tailoring the input/output functions".
具体是什么意思看的也不是很懂,后来看了别人的解决方法是:在头文件中仅声明变量,而把变量的定义都放到c文件中去,问题就解决了。
即把
 
const int8 NoCheckBusy = 0;
const int8 CheckBusy = 1;
 
const int32 LCD_RS = 1<<4;
const int32 LCD_RW = 1<<5;
const int32 LCD_EN = 1<<6;
const int32 LCD_DATA = 0xff<<7;
 
都放到lcd.c中就可避免该问题,时间不多,具体原因还有待研究。

关键字:LPC2132 引用地址:LPC2132学习中遇到的错误1

上一篇:选ARM7还是选Cortex-M3?
下一篇:LPC2132学习中遇到的问题2

推荐阅读最新更新时间:2024-03-16 14:45

基于ARM7芯片LPC2132的在线升级方案
ARM处理器是一种高性能、低成本、低功耗的RISC微处理器,是目前最为流行的微处理器之一。ARM7作为ARM微处理器系列中的一员,广泛应用于工业控制、网络应用、消费电子和安全产品等。实际应用中往往需要对产品的程序进行升级以提升性能或消除缺陷,如何对已经投入使用的产品进行方便可靠的程序在线升级,是产品设计初期必须考虑的问题。尽管目前绝大多数基于Flash结构的ARM7芯片具备ISP功能,但是这需要特定的烧写软件支持和专业人员操作。烧写软件由芯片厂商提供,不便于集成到产品的主机端软件中。在产品软件功能中添加简单易用的程序升级功能十分必要,文中以NXP公司的ARM7芯片LPC2132为例,为具有IAP功能的ARM7芯片提出一个稳定的在线
[单片机]
基于ARM7芯片<font color='red'>LPC2132</font>的在线升级方案
基于ARM微处理器LPC2132的智能电动机保护器设计
1 引 言 随着电动机控制中心(MCC)技术的发展,模块化的智能电动机保护器得到了越来越广泛的应用,同时也对电动机保护提出了更高的要求。针对电气监控系统自动化程度越来越高的发展趋势,用低压智能电动机保护控制器作为发电厂低压电动机的保护和测控,是提高电气监控系统运行维护水平的重要手段。 目前传统的8/16位的单片机仍然广泛应用于电气保护中,但是他们仅仅具有基本的测量控制功能,在人机界面、数据查询、监控处理能力比较有限,大部分缺少网络通信功能。在实现自动在线监测领域中,ARM芯片在多目标采集,多层次监测和网络化等方面具有强大的优势。由于LPC2132属于ARM7系列处理器,能对多个采样点进行同时测量,具有强大的数据处理功能。同时,
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved