您现在的位置: 主页 > MCU > 单片机技术应用 > IAR编译器配置 -
本文所属标签:
为本文创立个标签吧:

IAR编译器配置 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
IAR编译器配置(AVR)一、EEPROM 区域数据存储:__eeprom unsigned char a;//定义一个变量存放在EEPROM空间__eeprom unsigned char a @ 0x8;//定义一个变量存放在EEPROM空间0X08单元__eeprom unsigned ch

 

本文引用地址: http://www.21ic.com/app/mcu/201804/765840.htm

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

 

 



              查看评论 回复



 

"IAR编译器配置 -"的相关文章

网站地图

围观()