IAR平台进行编译时常见错误:

1.IAR编辑时出现如下错误:

                        Near constant start address + size must be less than ...

      错误原因是:代码对应的Device 芯片选型错误。

      解决方法:将General Options/ Device 下拉选项选择对应的芯片类型;

           例如:设置为RL->R7F0C->RL78->R7Fxxxxx

            如果没有RL_R7F0C选项则在  IAR Systems / Embedded workspace 7.4/rl78 中添加两个补丁文件

              1.config文件;2.Inc文件

2.IAR中设置输出bin文件,右键工程名->option->output converter->output

  勾选两个选项框 ,在output format选择binary

   设置输出hex文件,有两种方式:

              方式1:同上,只是在output 选项中选择Intel Extended

             方式2:打开IAR工程选项,选中linker->output

3.IAR中工程目录下显示为暗灰色带X号的文件表示此文件不参与次Project的编译,设置方法为在Project某个具体文件上右键->option->exclude from build 即可。

4.IAR 开发工具的工程文件管理思想是这样的:一个workspace里可以包含对个Project,而一个Project又可以存在多种不同的配置,具体参考 help->IDE Project manage and build Guide。

5.在IAR中存储生成的hex及bin文件的目录路径不能有中文字符,否则会报错:

  Error while running ieftool exe -- hex --verboose

6.IAR编译出现 unrecongnized token Error[pe007]......是因为代码中有中文输入模式下输入的字符。

7.IAR编译出现warning [pe223]:funtion "get_offset_alig"declare implicity 是因为没有声明函数原型。

8.IAR中出现 Not a member of the active project.

这个问题的原因是因为:文件备份后文件夹路径改变。

解决方法:IAR具有清除编译器的功能,在workspace中右键工程名->clean 将以前编译过的信息全部清除。然后重新rebuild all。

9.IAR出现warning [pe047]:incompatible redefinination of macro 

是因为有同名的宏但定义不同。

10.IAR中出现Error[Li006]:duplicate define for .....

原因:一个变量在多个文件中被定义,初始化。

解决方式:在引用的.c文件中加extern。

11.IAR中出现Error[Li005]:no definition for....

原因:变量在使用时只是申明了 ,而没有进行定义

解决方式:比如在a.h中定义了一个结构体 struct tan{int a,charb}  然后在a.h中申明 extern struct tan pc 

当在a.c中使用时需要定义struct tan pc    不定义这个就会报错。

12.IAR中出现#error directive:“must spefical device type !!!”

     原因:宏定义判断条件写错

     解决方式:改正写错的宏。

13.IAR中出现 Error [pe159]:declaration is incompation with previous

   (函数的声明与调用,参数类型,参数个数,返回值类型需要一致。)

原因:就是说,你的函数声明写在了调用之后,比如你在51行调用了函数,但是函数的定义在159行,编译器误把你的函数定义当成了函数调用,而把函数调用当做了函数声明。

解决方式:1.在调用函数之前先声明

                  2.将函数定义在调用之前

14.IAR中出现了warning [pe174]:expression has no effect

       说明此句是无效的,对程序无影响。

       1.提示你去掉这句代码,可以使代码效率更高。

       2.编译怀疑你的表达式没有写完,给你提示一下。

15.IAR中出现[pe012]:parsing restart here after previous syntax error :

      出现此问题原因是少了一个大括号。

16.IAR 连接源文件时出现duplicate definitions错误

原因:就是多个文件定义全局变量的时候一个变量的定义间接地出现在了多个地方。
例如,变量flag在文件stm32f4xx_it.h中定义了一次,然后被main.c包含进来,又被定义了一次,所以就出现错误。

解决方法:

首先,要知道的是全局变量的定义要放在.c文件里而不是.h(头文件)中。同时删除头文件中变量的定义。
同时在.h(头文件)中说明变量一下为extern,不然编译的时候会出现未定义错误。(注意:这里说明变量的时候不能再给他赋值,会出错。)

17IAR中出现  .Fatal Error[Li004]: file "F:\IARProject\aboard project\aboard

project920M\Src_BOOT-SWMW470X(4438)\SWMW470X_boot-IAR_7.2\boot7.2\arch

\r5f\fm33a04x\project\SWMW470S\Obj\cstartup.o" is not an object or archive file


原因:找不到这个文件(可能是1.头文件路径不对;2.没有添加这个文件)

解决方式:1修改头文件路径;

                  2添加此文件;

18.iar used for multiple files 问题的解决

出现这个问题的原因是我在 option-->Linker--->output  与   option--->Linker--->extern output里都进行输出设置,且输出的文件名是一样的,解决方案是将其中某一个设置删掉,就可以了。

19.IAR调试时出现The stack plug-in failed to set a breakpoint on "main". 解决方法

IAR调试出现The stack plug-in failed to set a breakpoint on "main". The Stack window will not be able to display stack contents. (You can change this setting in the Tool>Options dialog box.)的警告,程序能烧进去,但不能调试。

 
需要进行如下配置:
 1. iar->options->linker->output->format;    选择 Debug information for c-SPY选项
 2. iar->Tools->options->stack->去掉选项“stack pointer(s) not valid until program reaches”

 

 

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IAR是一种常见的继电器开发工具,用于开发STM8S单片机。STM8S是意法半导体公司推出的一款低功耗、高性能的8位单片机系列。 在使用IAR开发STM8S,首先需要安装IAR Embedded Workbench软件。这个软件提供了一个集成的开发环境,包括编译器、调试器和IDE等工具,使得开发者能够方便地进行代码编写、编译、下载和调试等步骤。 在编写代码,可以使用C语言或汇编语言来进行编程。IAR提供了丰富的库函数和例程,方便开发者使用各种功能和外设。开发人员可以根据自己的需求,调用相应的库函数来控制STM8S的引脚、定器、串口通信、ADC等外设。 编译完成后,可以使用IAR提供的调试器进行下载和调试。开发者可以通过调试器实监视程序运行的状态,查看变量的值、寄存器的状态,以及程序执行的流程等。同,也可以进行单步调试、断点调试等功能,帮助开发者更好地进行程序调试和错误定位。 使用IAR开发STM8S具有良好的兼容性和可移植性。开发者可以使用IAR软件在不同的平台上开发STM8S,例如Windows和Linux等操作系统。同IAR提供了针对不同型号的STM8S芯片的编译器和库文件,使得开发者能够方便地移植和调试代码。 总之,使用IAR开发STM8S是一种高效、方便和可靠的方式。通过该开发工具,开发者可以快速开发出满足各种需求的嵌入式应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值