IAR编译器的常见问题.doc_第1页
IAR编译器的常见问题.doc_第2页
IAR编译器的常见问题.doc_第3页
IAR编译器的常见问题.doc_第4页
IAR编译器的常见问题.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IAR编译器的常见问题 最近因为项目需要开始使用IAR for AVR,我用的是5.40版本的,主要是5.40以上才包括了aTtiny87,至于安装文件和和谐文件,大家自己找吧,很好找的。 1.编译报错如图所示:很显然你没有使能寄存器的位定义。方法如下:Project Option General Options System(如下图所示),勾选Enable bit definitions in I/O-Include files即可2.MCU型号选择如果和我一样都次都是以空工程创建的话,不过忘了第一步先进Project Option General Options Target选择所使用的MCU型号,不然编译免不了要报错,如下图所示。3. 堆栈大小 今天下午编译一个程序,0错误0警告,挺好,可一运行就跑飞,根本不能正常运行。 其实是我没有正常设置堆栈大小导致的这种问题,尤其是在写大工程时,这种错误出现的概率很高。GCC和IAR分配堆栈的方式不同,IAR先分配堆栈空间,相当于定义一个全局数组为堆栈空间,堆栈初始为堆栈空间最高地址;GCC不用先分配堆栈,自动把RAM剩余空间作为堆栈空间,堆栈初始为RAM最高地址。先编译看看自己的程序用了多少ram,在看看总共有多少ram。然后Project Option Linker List选择生成LIST文件,并包含stack选项,如下图所示。在./Debug/list目录下,得到.map(可能是.lst等其他格式)文件,用记事本打开,找到以下内容:* *CALL GRAPH* *-Sub-tree of type: Interrupt function tree that does not make: indirect callsCSTACK| Stack used (prev) : 0000000001 int_T0_OV| Stack used (prev) : 00000000| + function block : 0000000C.(省略N行)01 main| Stack used (prev) : 0000003A| + function block : 00000000 Option C/C+ complier List,勾选output assembler files,编译后则生成离线汇编代码文件此时在工程目录下的Debug-List即可看到所有参加编译的C文件对应的汇编文件,后缀名为*.s905.内联函数inline函数传统上只有C+支持,但IAR EW也支持在C代码中使用inline.#pragma inline:建议编译器对紧随其后的函数进行inline处理#pragma inline = forced:强制编译器对紧随其后的函数进行inline处理/* 错误描述 */ tft.c中定义内联函数#pragma inline = forced /强制inlinevoid TFT_Write_Colour(const RGB_COLOUR *rgb) /.code./ tft.h中声明函数void TFT_Write_Colour(const RGB_COLOUR *rgb);/ main.c中调用函数/ 编译报错:main中引用了未定义的外部函数TFT_Write_Colour。/* 解决办法 */ tft.h中“定义函数”#pragma inline = forced /在IAR EW430中,这里必须用强制inline;用inline可能导致编译器忽略内联,而定义成普通函数而出错。void TFT_Write_Colour(const RGB_COLOUR *rgb) /.code./ main.c中包含tft.h,并调用函数/ 结果:编译正确6. 如何把变量定义到flash空间?unsigned char _flash temptab = 1,2,3,4,5; _flash unsigned char a 0x8; / 定义变量存放在flash 空间0X08单元7. 关于内存模型AVR 微控制器的其中一个特点是它有一种存储器访问方法均衡了“cheap access limited to small memory areas”与“more expensive accessmethods that can access any location in memory”。在AVR_IAR C/C+编译器中,通过选择某种存储模式(memory model),可设置一些访问方法为默认的存储器访问方法(default memory accessmethod)。共有三种可用的存储模式Tiny,Small 和Large。你的处理器选项决定了哪些模式可以使用。如果你不指定一种存储模式,则编译器自动设定-v0、-v1、-v2、-v3、-v5 选项下的默认方法为Tiny,-v4 和-v6 选项下的访问方法为Small。8.关于生成文件格式的设置如图,在linker - outpu -other中可设置相应的输出文件格式.比如要生成bin格式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论