iccavr使用说明.docx
- 文档编号:10075233
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:64
- 大小:48.96KB
iccavr使用说明.docx
《iccavr使用说明.docx》由会员分享,可在线阅读,更多相关《iccavr使用说明.docx(64页珍藏版)》请在冰豆网上搜索。
iccavr使用说明
ICCAVR中文使用说明
(1)
ImageCraftICCAVR的中文使用说明
ICCAVR介绍
1ImageCraft的ICCAVR介绍
ImageCraft的ICCAVR是一种使用符合ANSI标准的C语言来开发微控制器MCU
程序的一个工具它有以下几个主要特点
ICCAVR是一个综合了编辑器和工程管理器的集成工作环境IDE其可在
WINDOWS9X/NT下工作
源文件全部被组织到工程之中文件的编辑和工程的构筑也在这个环境中完成编译
错误显示在状态窗口中并且当你用鼠标单击编译错误时光标会自动跳转到编辑窗口中
引起错误的那一行这个工程管理器还能直接产生您希望得到的可以直接使用的INTEL
HEX格式文件INTELHEX格式文件可被大多数的编程器所支持用于下载程序到芯片
中去
ICCAVR是一个32位的程序支持长文件名
出于篇幅考虑本说明书并不介绍通用的C语言语法知识仅介绍使用ICCAVR所
必须具备的知识因此要求读者在阅读本说明书之前应对C语言有了一定程度的理解
2ICCAVR中的文件类型及其扩展名
文件类型是由它们的扩展名决定的IDE和编译器可以使用以下几种类型的文件
输入文件
.c扩展名----表示是C语言源文件
.s扩展名----表示是汇编语言源文件
.h扩展名----表示是C语言的头文件
.prj扩展名----表示是工程文件这个文件保存由IDE所创建和修改的一个工程的有
关信息
.a扩展名----库文件它可以由几个库封装在一起libcavr.a是一个包含了标准C的
库和AVR特殊程序调用的基本库如果库被引用链接器会将其链接到您的模块或文件中
您也可以创建或修改一个符合你需要的库
输出文件
.s对应每个C语言源文件由编译器在编译时产生的汇编输出文件
.o由汇编文件汇编产生的目标文件多个目标文件可以链接成一个可执行文件
.hexINTELHEX格式文件其中包含了程序的机器代码
.eepINTELHEX格式文件包含了EEPROM的初始化数据
.cofCOFF格式输出文件用于在ATMEL的AvrStudio环境下进行程序调试
.lst列表文件在这个文件中列举出了目标代码对应的最终地址
.mp内存映象文件它包含了您程序中有关符号及其所占内存大小的信息
.cmdNoICE2.xx调试命令文件
.noiNoICE3.xx调试命令文件
.dbgImageCraft调试命令文件
3附注和扩充
#pragma编译附注
这个编译器接受以下附注
#pragmainterrupt_handler
这个附注必须在函数之前定义它说明函数func1func2是中断操作函数所以编译
器在中断操作函数中生成中断返回指令reti来代替普通返回指令ret并且保存和恢复函数
所使用的全部寄存器同样编译器根据中断向量号vectornumber生成中断向量地址
#pragmactask
这个附注指定了函数不生成挥发寄存器来保存和恢复代码它的典型应用是在RTOS
实时操作系统中让RTOS核直接管理寄存器
#pragmatext:
改变代码段名称使其与命令行选项相适应
#pragmadata:
改变数据段名称使其与命令行选项相适应这个附注在分配全局变量至EEPROM
中时必须被使用读者可参考访问EEPROM的例子
#pragmaabs_address:
函数与全局数据不使用浮动定位重定位而是从
开始分配绝对地址这在访问中断向量和其它硬件项目时特别有用
#pragmaend_abs_address
结束绝对定位使目标程序使用正常浮动定位
C++注释
如果你选择了编译扩充(Project->Options->Compiler)你可以在你的源代码中使用C++
的//类型的注释
二进制常数
如果你选择了编译扩充(Project->Options->Compiler)你可以使用0b<1|0>*来指定二
进制常数例如0b10101等于十进制数21
在线汇编
你可以使用asm("string")函数来指定在线汇编代码读者可参考在线汇编
4代码转换
IAR或其它ANSIC编译系统的代码转换
IARC编译器作为应用于AVR的第一个C编译器它有十分丰富的源代码当你从IAR
编译系统转换到ImageCraft编译系统时绝大多数符合ANSIC标准的程序代码不需要转
换IARC中IO寄存器的定义与ICCAVR也是相同的
中断操作描述ICCAVR使用pragma附注描述中断操作函数而IAR引入了语法扩
充interrupt关键字下面是一个对照
在ICCAVR中
#pragmainterrupt_handlerfunc:
4//4是这个中断的向量号func为中断处理函数名称
ICCAVR可以使多个中断向量共用一个中断处理函数
在IAR中
interrupt[vector_name]func()//vector_name是某一个中断向量的名称IARC的中
断向量地址使用中断名称来代替以增加程序的可读性
扩充关键字
IAR引入flash关键字将项目分配进入程序存贮空间FLASH存贮器ICCAVR使用
const关键字来达到相同的目的
过程调用转换
在两个编译系统之间函数参数传递使用的寄存器是不同的这仅影响手工写的汇编函
数
在线汇编宏等IAR不支持在线汇编符号而ICCAVR支持在线汇编
ICCAVR中文使用说明
(2)
1起步
自你启动IDE后首先从Project菜单系统选择Open命令进入\icc\examples.avr目
录并且选择并打开led工程工程管理器显示在这个工程中只有一个文件led.c然
后从Project菜单中选择Options命令打开工程编译选项在"Target"标号下选择目标处理
器然后从Project菜单中选择MakeProject命令IDE将调用编译器编译这个工程文件
并且在状态窗口中显示所有的信息
如果没有错误在与源文件同一个目录在这个例子中是\icc\examples.avr中输出
一个文件led.hex这个文件是INTELHEX格式大多数能支持AVRMCU的编程器
和模拟器都支持这种格式并且能下载这个程序进入你的目标系统这样就完成了一个
程序的构筑
如果你希望用支持COFF调试信息的工具来测试你的程序比如AVRStudio那么
你需要从Project菜单中选择Options命令在编译标签下选择COFF输出文件格式对
一些常用的功能你也可使用工具条或鼠标右键弹出菜单例如你可以在工程窗口单
击鼠标右键选择编译选项
在工程窗口中双击文件名IDE将使用编辑器打开这个文件按这个方法打开led.c
作为试验可设置一些错误例如从一行中删除分号现在从Project菜单中选择Make
Project命令IDE首先自动保存已经改变的文件并且开始编译这个文件这时在状态
窗口中会显示错误信息单击状态窗口中错误信息行或单击其左边的错误符号光标
将移到编辑器中错误行的下面一行上基本上所有C编译器都是这样
开始一个新的工程
从Project菜单中选择New命令并且浏览至你希望输出工程文件的目录输出文
件的名称取决于你的工程文件名称例如如果你创建一个名称为foo.prj的工程那么
输出文件名称为foo.hex或foo.cof等
自从创建你自己的工程后你可以开始写你的源代码(C或汇编格式)并且将这个
文件加入到工程文件排列中单击工具栏中Build图标可以很容易地构筑这个工程
IDE输出与ATMEL的AVRStudio完全兼容的COFF文件你可以使用ATMEL的AVR
Studio来调试你的代码
为更容易地使用这个开发工具你可以使用应用程序向导来生成一些使用有关硬件
的初始化代码
2C程序的剖析
一个C程序必须定义一个main调用函数编译器会将你的程序与启动代码和库函
数链接成一个可执行文件因此你也可以在你的目标系统中执行它启动代码的用
途在启动文件中很详细地被描述了一个C程序需要设定目标环境启动代码初始化这
个目标使其满足所有的要求
通常你的main例程完成一些初始化后然后是无限循环地运行作为例子让我
们看\icc\examples目录中的文件led.c
#include
/*为使能够看清LED的变化图案延时程序需要有足够的延时时间*/
voidDelay()
{
unsignedchara,b;
for(a=1;a;a++)
for(b=1;b;b++)
;
}
voidLED_On(inti)
{
PORTB=~BIT(i);/*低电平输出使LED点亮*/
Delay();
}
voidmain()4
{
inti;
DDRB=0xFF;/*定义B口输出*/
PORTB=0xFF;/*B口全部为高电平对应LED熄灭*/
while
(1)
{
/*LED向前步进*/
for(i=0;i<8;i++)
LED_On(i);
/*LED向后步进*/
for(i=8;i>0;i--)
LED_On(i);
/*LED跳跃*/
for(i=0;i<8;i+=2)
LED_On(i);
for(i=7;i>0;i-=2)
LED_On(i);
}
}
这个main例程是很简单的在初始化一些IO寄存器后之后它运行在一个无限循
环中并且在这个循环中改变LED的步进图案LED是在LED_On例程中被改变的
在LED_On例程中直接写正确的数值到IO端口因为CPU运行很快为能够看见图案
变化LED_On例程调用了延时例程因为延时的实际延时值不能被确定这一对嵌套循
环只能给出延时的近似延时时间如果这个实际定时时间是重要的那么这个例程应该
使用硬件定时器来完成延时
其它的例子8515intr.c程序很简单但同样清楚地显示了如何用C写一个中断处理
过程这两个例子可以作为你的程序的起点
四ICCAVR的IDE环境
1编译一个单独的文件
正常建立一个输出文件的次序是你首先应该建立一个工程文件并且定义属于这个
工程的所有文件然而我们有时也需要将一个文件单独地编译为目标文件或最终的输
出文件这时可以这样操作从IDE菜单File中选择CompileFile...命令来执
行toObject和toOutput中的任意一个当你调用这个命令时文件应该是打开的
并且在编辑窗口中可以编辑的
编译一个文件为目标文件toObject对检查语法错误和编译一个新的启动文件是
很有用的编译一个文件为输出文件toOutput对较小的并且是一个文件的程序较为
有用注意这里使用默认的编译选项
2创建一个新的工程
为创建一个新的工程从菜单Project中选择New命令IDE会弹出一个对话
框在对话框中你可以指定工程的名称这也是你的输出文件的名称如果你使用一些
已经建立的源文件你可在菜单Project中选择AddFile(s)命令
另外你可以在菜单File中选择New命令来建立一个新的源文件来输入你的
代码你可以在菜单File中选择Save或SaveAs命令来保存文件然后你可
以象上面所述调用AddFile(s)命令将文件加入到工程中也可在当前编辑窗口中单击
鼠标右键选择AddtoProject将文件加入已打开的工程列表中通常你输出源文件在
工程同一个目录中但也可不作这样要求
工程的编译选项使用菜单中Project中的Options命令
3工程管理
工程管理允许你将多个文件组织进同一个工程而且定义它们的编译选项这个特
性允许你将工程分解成许多小的模块当你处理工程构筑时只有一个文件被修改和重
新编译如果一个头文件作了修改当你编译包含这个头文件的源文件时IDE会自动
重新编译已经改变的头文件
一个源文件可以写成C或汇编格式的任意一种C文件必须使用.c扩展名汇
编文件必须使用.s扩展名你可以将任意文件放在工程列表中例如你可以将一个
工程文档文件放在工程管理窗口中工程管理器在构筑工程时对源文件以外的文件不予
理睬
对目标器件不同的工程可以在编译选项中设置有关参数当你新建一个工程时
使用默认的编译选项你可以将现有编译选项设置成默认选项也可将默认编译选项装
入现有工程中默认编译选项保存在default.prj文件中
为避免你的工程目录混乱你可以指定输出文件和中间文件到一个指定的目录通
常这个目录是你的工程目录的一个子目录
4编辑窗口
编辑窗口是你与IDE交流信息的主要区域在这个窗口中你可以修改相应的文件
当编译存在错误时用鼠标单击有关错误信息时编辑器会自动将光标定位在错误行的
位置注意对C源文件中缺少分号的错误编辑器定位于其下面一行
5应用构筑向导
应用构筑向导是用于创建外围设备初始化代码的一个图形界面你可以单击工具条
中的Wizard按钮或菜单Tools中的ApplicationBuilder命令来调用它
应用构筑向导使用编译选项中指定的目标MCU来产生相应的选项和代码
应用构筑向导显示目标MCU的每一个外围设备子系统它的使用是很显而易见的
在这里你可以设置MCU的所具有的中断内存定时器IO端口UARTSPI和模拟
量比较器等外围设备并产生相应的代码如果你需要的话还可产生main()函数
6状态窗口
状态窗口显示IDE的状态信息
7终端仿真
IDE有一个内置的终端仿真器注意它不包含任意一个ISP在系统编程功能但
它可以作为一个简单的终端或许可以显示你的目标装置的调试信息也可下载一个ASC
码文件
从6.20版本开始IDE加入了对ISP的支持
五菜单解释
1弹出菜单
在ICCAVR环境中单击右键那么ICCAVR会根据实际情况弹出相应的工具菜单
2FileMenu文件菜单
New新建一个文件你可在编辑窗口是输入文字或代码
Reopen重新打开历史文件有关历史文件显示的右边的子菜单中
Open打开一个已以经存在的文件用于编辑文件用浏览窗口选择
Reload…formDisk放弃全部的修改从磁盘中重新装载当前文件
Reload….fromBackUP从最后一次的备份文件中装载当前文件
Save保存当前文件如果环境设置中设置了保存备份文件则将原文件以
Saveas将当前文件用另外一个名称来保存
Close关闭当前文件如果文件有过修改系统会进行提示
CompileFile…toObject编译当前文件成目标文件注意目标文件不可以直接
用于对芯片编程或用于调试其主要用于语法检查为创建新的启动文件或库产生
目标文件
CompileFile...toOutput编译当前文件成输出文件其产生的输出文件可用于编
程器和调试器
SaveAll保存所有打开的文件
ClossAll关闭当前打开的所有文件同样它会提示你保存已经修改的文件
Print打印当前文件
Exit退出ICCAVR的IDE环境
3EditMenu编辑菜单
Undo撤消最后一次的修改
Redo撤消最后一次的Undo
Cut剪切选择的内容到剪帖板
Copy拷贝选择的内容到剪帖板
Paste将剪帖板内容粘帖在当前光标的位置
Delete删除选择的内容
SelectAll选择全部内容
BlockIndent对选择的整块内容右移
BlockOutdent对选择的整块内容左移
4Searchmenu寻找菜单
Find…在编辑窗口中寻找一个文本
它有以下选项
MatchCase–区分大小写
WholeWord–全字匹配
Up/Down–往上或往下
FindinFiles...–在当前打开的文件中或在当前工程的所有文件中或当前目录中
的文件中寻找一段文本它有以下选项
CaseSensitive–大小写敏感
WholeWord-全字匹配
RegularExpression–寻找规则的表达式
Replace...–在编辑器中替换文本
FindAgain–寻找下一个
GotoLineNumber–转到指定行号
AddBookmark–添加书签
DeleteBookmark–删除书签
NextBookmark–跳转到下一个签
GotoBookmark–跳转到指定的书签
5ViewMenu视图菜单
StatusWindow–如果选中显示状态窗口
ProjectMakefile–以只读方式打开makefile文件
OutputListingFile–以只读方式打开列表文件
6ProjectMenu工程菜单
New...–创建一个新的工程文件
Open–打开一个已经存在的工程文件
OpenAllFiles...–打开工程的全部源文件
CloseAllFiles–关闭全部打开的文件
Reopen...–重新打开一个最近打开过的工程文件
MakeProject–解释和编译已经修改的文件为输出文件
RebuildAll–重新构筑全部文件注意在版本升级后对原有工程最好全部重新构筑
AddFile(s)–添加一个文件到工程中这个文件可以是非源文件
RemoveSelectedFiles–从工程中删除选择的文件
Option...–打开工程编译选项对话框
Close–关闭工程
SaveAs...–将工程换一个名称存盘
7ToolsMenu工具菜单
EnvironmentOptions–打开环境和终端仿真器选项对话框
EditorandPrintOptions–打开编辑和打印选项对话框
AVRCalc–打开AVR计算器可以计算UART的波特率定时器的定时常数
ApplicationBuilder–打开应用向导程序生成硬件的初始化代码
ConfigureTools–允许你添加自己的内容到工具菜单
Run–以命令行方式运行一个程序
8CompilerOptions编译选项
编译选项总共有三个页面PathsCompiler和Target
在Paths页面中有
IncludePath(s)–你可以指定包含文件的路径
AssemblerIncludePath(s)–指定汇编包含文件的路径
LibraryPath–链接器所使用的库文件的路径
OutputDirectory–输出文件的目录
Compiler页面有
StrictANSICChecking–严格的ANSIC语法检查
AcceptExtensions–接受C++类型语法扩充
MacroDefine(s)–定义宏宏之间用空格或分号分开宏定义形式如下
name[:
value]或name[=value]
例如
DEBUG:
1;PRINT=printf
等价于
#defineDEBUG1
#definePRINTprintf
MacroUndefine(s)–同上但意义相反
OutputFileFormat–输出文件格式COFF/HEXIntelHEX或COFF
Optimizations–代码优化
Default–基本优化象寄存器分配共用相同的子例程等
MaximizeCodeSizeReduction–只有专业版才可使用它调用了代码压缩优化去
除了无用的碎片代码
Target页面有
DeviceConfiguration–选择目标MCU
MemorySizes–要选择"Custom"时指定内存大小包括ROMSRAM和EEPROM
TextAddress–通常代码地址开始于中断向量区域后面
DataAddress–指定数据起始地址通常为0x60
UseLongJMP/CALL–指定MCU是否支持长跳转和长调用
EnhancedCore–指定硬件支持增强核指令
IORegistersOffsetInternalSRAM–指定内部SRAM的偏移量例如,8515的SRAM
起始于0x60,在IO寄存器空间后面延伸了512字节而Mega603,IO寄存器覆盖在SRAM
空间中因此SRAM也是从0开始的
Internal对ExternalSRAM–指定你的目标系统的数据SRAM类型
PRINTFVersion–选择PRINTF的版本
Small或Basic:
只有%c,%d,%x,%X,%u,and%s格式支持
Long:
支持%ld,%lu,%lx,%lX
Floatingpoint:
%f支持注意这个选项需要很大的内存
AVRStudioSimulatorIO–如果选中AVRStudio的终端模拟仿真被支持
AdditionalLibraries–使用标准库以外的附加库
StringsinFLASH–字符串只保存在FLASH存贮器中
ReturnStackSize–指定编译器使用的硬件堆栈的大小编译器使用的软件堆栈的大小
不需地指定
NonDefaultStartup–允许你指定一个启动文件的位置系统默认的启动文件在Paths页
中指定这样IDE可以使用多个启动文件
UnusedROMFillPattern–用一串十六进制数填充空余的ROM空间
ICCAVR中文使用说明(3)
C库函数与启动文件
1启动文件
这个链接器会自动将启动文件连接到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iccavr 使用说明