IAR编译器配置
扫描二维码
随时随地手机看文章
IAR编译器配置(AVR)
一、EEPROM 区域数据存储:
__eeprom unsigned char a;//定义一个变量存放在EEPROM空间
__eeprom unsigned char a @ 0x8;//定义一个变量存放在EEPROM空间0X08单元
__eeprom unsigned char p[] @ 0x22//定义一个数组存放在EEPROM空间,开始地址为0X22单元
__eeprom unsigned char a @ 0x08=9;//定义一个常数存放在EEPROM空间0X08单元
__eeprom unsigned char p[] @0x22={1,2,3,4,5,6,7,8};
EEPROM操作宏取函数:在comp_a90.h intrinsics.h头文件里有详细说明。
自动生成.eep文件置:在Project->Options->linker->config>的linker command line中观察该Project使用了哪个XCL文件 。本文使用M8编译,使用文件是”TOOLKIT_DIR$\src\template\cfgm8.xcl”-Ointel-extended,(CODE)=.hex
-Ointel-extended,(XDATA)=.eep
二、FLASH 区域数据存储:
用关键字__flash 控制来存放, __ flash 关键字写在数据类型前后效果一样
__flash unsigned char a @ 0x8;//定义变量存放在flash 空间0X08单元__flash
unsigned char p[] @ 0x22//定义数组存放在flash 空间,开始地址为0X22单元
__flash unsigned char a @ 0x08=9;//定义常数存放在flash 空间0X08单元
__flash unsigned char p[] @ 0x22={1,2,3,4,5,6,7,8};
unsigned int __flash * p;//定义个指向flash 空间地址的指针,16位。
unsigned int __farflash * p;//定义指向flash 空间地址的指针,24位。
__flash unsigned char * p; //定义指向SARMM空间地址的指针,指针本身存放在flash 中。
flash 操作宏函数:在comp_a90.h intrinsics.h头文件里有详细说明
三、IAR编译器对位的支持更强大:
PORTB_ Bit2=1; //置PORTB的第2位=1
PORTC_Bit4=PORTB_Bit2;//把PORTB的第2位传送到PORTC的第4位
四、头文件
avr_macros.h里面包含了读写16位寄存器的简化书写,和几个位操作函数
comp_a90.h对大量的内在函数做了简要书写,flash 操作宏函数
ina90.h包含"inavr.h" "comp_A90.h"文件
intrinsics.h内在函数提供最简单的操作处理器底层特征。休眠,看门狗,FLASH函数。
iomacro.H I/O寄存器定义文件样本。
#include
#include
#include
#include
#include
#include
#include
#include
#include
五、extra options
1、GP-system-Data stack :0xff //堆栈大小设置
2、C/C++-Preprocessor:$PROJ_DIR$\headers\ //头文件定位
C/C++-extra Option: --string_literals_in_flash //定义字符串在flash空间
3、Linker-Extra Option:
-Ointel-extended,(XDATA)=.eep
-Ointel-extended,(CODE)=.A90
-Ointel-extended,(CODE)=.hex
5、与ICC编译器兼容宏定义
#ifndef __ICCAVR__
#define __ICCAVR__
#endif
#ifndef BIT
#define BIT(x) (1 << (x))
#endif
#define NOP() __no_operation() //asm("nop")
#define CLI() __disable_interrupt() //asm("cli")
#define SEI() __enable_interrupt() //asm("sei")
#pragma language=extended
#ifndef ENABLE_BIT_DEFINITIONS
#define ENABLE_BIT_DEFINITIONS
#endif