关于CC2530的IAR工程编译器相关

来源:互联网 发布:手机字体变大软件 编辑:程序博客网 时间:2024/04/30 16:47

一、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};

二、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 操作宏函数:在相关intrinsics.h头文件里有详细说明

三、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

四、与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

 

 


 

 

 

原创粉丝点击