Chinaunix首页 | 论坛 | 博客
  • 博客访问: 694850
  • 博文数量: 85
  • 博客积分: 1797
  • 博客等级: 上尉
  • 技术积分: 1238
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-02 08:53
个人简介

职位:技术总监 1、精通c++(linux平台、vc++Mfc、qt)、java、php、unity3d,略懂python 2、用c++开发过嵌入式产品,用c++开发过大型银行运维产品 3、用java开发大型银行运维产品,学校教务系统 4、用php开发进销存系统(在销售中),用php开发淘宝小程序 5、用unity3d开发衣柜设计软件,在运营中

文章分类

全部博文(85)

分类: C/C++

2011-09-21 21:24:04

 
    在arm中,下面的定义随处可见。
  1. #define MEM_FOR_INFO_SAVE (*(volatile unsigned *)0x0c0000c3)
  2. unsigned char* p=(unsigned char*)(&MEM_FOR_INFO_SAVE)
    在arm中,对存储器的操作,刚开始接触的时候挺诡异的,就像上面的操作,这种写法到处都是。总感觉这样反过来复过去的指针操作不累吗。
 
    困惑了好久后,才明白过来其中包含的意义。
 
    0x0c0000c3这个肯定是flash的地址,究竟怎样写,编译器才认为它是个地址呢,上面诡异的定义就是这个地址的诠释。
 
    (volatile unsigned *)0x0c0000c3  说明0x0c0000c3是个地址
     (*(volatile unsigned *)0x0c0000c3)  地址0x0c0000c3中存的数字
     &MEM_FOR_INFO_SAVE               取地址,还是0x0c0000c3这个地址 
     (unsigned char*)(&MEM_FOR_INFO_SAVE)   地址类型强制转化为unsigned char。
 
     不过还是感觉挺啰嗦的,直接写成

     unsigned char* p=(unsigned char*)(0x0c0000c3);

     难道编译不过去吗,手头上没ADS编译器,就不实验了。

    
   
   
    
阅读(2662) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~