EWAVR中flash变量,eeprom变量的…


 IAR中的变量可以定义在RAM中,也可以定义在FLASH和EEPROM中,可以用关键字__flash和__eeprom实现


  flash变量只能读,不能写。也就是只能定义常量。
        unsigned   char   __flash   var1;
        __flash     unsigned  char   var2;


  eeprom变量可以读也可以,但不支持定义变量时初始化赋值,定义时要在前面加上关键字 __no_init

,否则编译是会报错
       __no_initunsigned   char   __eeprom   var3;
       __no_init __eeprom  unsigned  char    var4;
       定义的eeprom变量是默认是从eeprom的0x0地址开始存放。

定义绝对地址的flash常量的实现方法是:

 unsigned   char   __flash    var1@ 0x10 = 0xff;
  __flash     unsigned  char   var2 @ 0x10 = 0xff;
如果要定义绝对地址的eeprom变量可以这样实现:
      __no_init  __eeprom unsigned char var @ 0x10;    // @后面是变量在EEPROM中存放的首地址

 

定义指向flash 空间地址的指针: unsigned char __flash *pt;

 

定义指向EEPROM空间地址的指针: unsigned char __eeprom *pt;

 

访问FLASH空间绝对地址 : 比如地址为0X1FFF

                        unsigned long  res=  *(unsigned long __farflash*)0X1FFF;

注意:访问 0-0xFFFF (64 Kbytes) 空间用关键字 __flash

      访问0-0x7FFFFF (8 Mbytes) 空间用关键字 __farflash

 

访问EEPROM空间的绝对地址: 比如地址为0XFFC

 unsignedlong   res= *(unsigned long __eeprom*)0xFFC;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值