打印

IAR FOR ARM创建项目,编译出错,请指教

[复制链接]
4904|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好:
1.        我用的是IAR Embedded workbench 5.4版本。
2.        UART.ZIP是我网上下载的一块路虎开发板关于NXP LPC1768芯片的演示例子,不是用IAR编译的。
3.        现在我想将这个例子采用IAR来编译,总是编译不过去,请大家帮我看看哪里设置不对,还是缺文件。我创建项目的步骤如下:
l        打开IAR…IDE, 选择Project->Create new project.
l        弹出的Create newproject对话框中只有ARM可选,我默认选择Emptyproject,直接按OK按钮。
l        弹出另存为对话框,我设置名字为MyOne,按保存键保存。
l        在IAR …IDE中出现了MyOne-Debug*的项目项。
l        点击它,再按右键选择Add->Addfiles.将该文件夹下子文件夹APP里的main.c和uart.c添加进来。
l        按Project->Rebuild all,弹出另存为对话框,我同样将其保存为MyOne.eww的文件,编译后出现如下另个错误:
   file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg

          图片看不到,是报缺LPC 17XX.H文件
l        我选择Project->option->对Category项目进行了一些设置,具体我也不知道设置了什么,大部分都是默认的吧。但肯定把Target项选择Device->NXPLPC1768设置上了。
l        Project->option-> Category->Linker->Config下是我安装目录下的文件,默认的也是这个,不知道啥意思,这里也列出来供参考:$TOOLKIT_DIR$\CONFIG\generic_cortex.icf
l        下一个Debugger设置如下
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.jpg
l        其他设置就都是默认的了。
l        保存这些设置后再次按Project->Rebuild all,还是出现上述两个错误。
l        我在该文件夹子目录下的文件里找到了这个lpc17xx.h文件,将其添加到项目里再次编译,还是出现这两个问题。
l        文件夹里面有关于system_LPC17xx.c、system_LPC17xx.h、startup_LPC17xx.s、core_cm3.c、core_cm3.h的文件,我将其都添加了进来,出现如下3个错误:
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image006.jpg
4.        试问,我这样创建新项目正确吗?我哪里设置错了还是没有设置?
HelpMe.zip (558.19 KB)



看看附件里的文件吧,谢谢大家了!


相关帖子

沙发
ILIKESIMPLE|  楼主 | 2013-4-22 17:36 | 只看该作者
谢谢各位前辈了!

使用特权

评论回复
板凳
你好陌生人| | 2013-4-22 17:37 | 只看该作者
你没有包含头文件吧#include<nxp/iolpc1768.h>,这个有吗

使用特权

评论回复
地板
你好陌生人| | 2013-4-22 17:42 | 只看该作者
你这里设置了吗。设置内核的

QQ截图20130422174038.JPG (39.46 KB )

QQ截图20130422174038.JPG

使用特权

评论回复
5
ILIKESIMPLE|  楼主 | 2013-4-22 17:50 | 只看该作者
我吧那个LPC 17XX.H都包含到我的项目文件表里了。

这个设置我也选择了NXP LPC1768了,就是编译不过。

使用特权

评论回复
6
ILIKESIMPLE|  楼主 | 2013-4-22 18:03 | 只看该作者
求救啊!!!

使用特权

评论回复
7
你好陌生人| | 2013-4-23 09:33 | 只看该作者
ILIKESIMPLE 发表于 2013-4-22 18:03
求救啊!!!

你的程序和板子是配套的吗,端口配置是一样的吗

使用特权

评论回复
8
ILIKESIMPLE|  楼主 | 2013-4-23 11:54 | 只看该作者
现在没有上板子,我也没有板子,我想将其在IAR下编译。仿真模式下编译。

使用特权

评论回复
9
ILIKESIMPLE|  楼主 | 2013-4-23 11:54 | 只看该作者
没有人下载附件,帮我试试么????

使用特权

评论回复
10
你好陌生人| | 2013-4-23 12:28 | 只看该作者
ILIKESIMPLE 发表于 2013-4-23 11:54
没有人下载附件,帮我试试么????

我帮你试一下

使用特权

评论回复
11
你好陌生人| | 2013-4-23 12:43 | 只看该作者
不行,要改很多的设置,你包含的那个头文件iar库里面根本没有,所以配置不了,如果改成nxp/iolpc1765的话,你程序里面的寄存器 头文件里面又没有定义,所以说还是很麻烦的,还是用人家原来的编译工具吧,要不然就是找到原来的那个头文件,1756.h,放在你的工程目录下面,然后包含编译

使用特权

评论回复
12
snakeemail| | 2013-4-23 17:12 | 只看该作者
你找一个例子,一个一个选项对,我上次就这样

使用特权

评论回复
13
cooltune| | 2013-4-24 09:16 | 只看该作者
在iar里面打开一个样本工程,把main函数替换掉,把里面的库文件考进去经可以了。
路径可以参考图片。

iar.png (36.83 KB )

iar.png

使用特权

评论回复
14
cclgxuanshao| | 2013-4-24 11:12 | 只看该作者
帮顶

使用特权

评论回复
15
ILIKESIMPLE|  楼主 | 2013-4-24 11:53 | 只看该作者
非常感谢!我马上试试看!!

使用特权

评论回复
16
ILIKESIMPLE|  楼主 | 2013-4-24 13:47 | 只看该作者
大家好:

    在cooltune建议下,我重新编译了。编译成功。
也许是我的重大愚弱失误吧,我以前的那个压缩包里面的各个文件在不同的子文件夹里,现在我把它们都拿出来放到一个独立的文件夹下,然后按照我原来叙述的过程创建项目,只添加源文件,没有添加.h头文件,编译既然一下就通过了。但仍然遇到3个警告,主要集中在system_lpc17xx.c模块的void SystemCoreClockUpdate (void)函数中,现在我将该函数复制出来了,如下所示:
/*----------------------------------------------------------------------------
  Clock functions
*----------------------------------------------------------------------------*/
void SystemCoreClockUpdate (void)            /* Get Core Clock Frequency      */
{
  /* Determine clock frequency according to clock register values             */
  if (((LPC_SC->PLL0STAT >> 24) & 3) == 3) { /* If PLL0 enabled and connected */
    switch (LPC_SC->CLKSRCSEL & 0x03) {
      case 0:                                /* Int. RC oscillator => PLL0    */
      case 3:                                /* Reserved, default to Int. RC  */
       SystemCoreClock = (IRC_OSC *
                          ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                          (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                          ((LPC_SC->CCLKCFG & 0xFF)+ 1));

        break;
      case 1:                                /* Main oscillator => PLL0       */
        SystemCoreClock = (OSC_CLK *
                          ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                          (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                          ((LPC_SC->CCLKCFG & 0xFF)+ 1));

        break;
      case 2:                                /* RTC oscillator => PLL0        */
       SystemCoreClock = (RTC_CLK *
                          ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1)))  /
                          (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)    /
                          ((LPC_SC->CCLKCFG & 0xFF)+ 1));

        break;
    }
  } else {
    switch (LPC_SC->CLKSRCSEL & 0x03) {
      case 0:                                /* Int. RC oscillator => PLL0    */
      case 3:                                /* Reserved, default to Int. RC  */
        SystemCoreClock = IRC_OSC / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
        break;
      case 1:                                /* Main oscillator => PLL0       */
        SystemCoreClock = OSC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
        break;
      case 2:                                /* RTC oscillator => PLL0        */
        SystemCoreClock = RTC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
        break;
    }
  }

}

红色字体代码产生3个警告,警告是:
Warning[Pa082]:undefined behavior: the order of volatile accesses is undefined in this statement。

试问:这警告啥意思?以后会影响我程序的执行?

使用特权

评论回复
17
cooltune| | 2013-4-24 23:24 | 只看该作者
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

28

帖子

1

粉丝