Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131915
  • 博文数量: 33
  • 博客积分: 287
  • 博客等级: 二等列兵
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-13 23:06
文章分类
文章存档

2015年(3)

2014年(13)

2013年(8)

2012年(9)

我的朋友

分类: C/C++

2014-03-17 14:25:37

设备寄存器中的数据不需要改写就可以自己变化,每次读上来的值可能不同
连续多系想设备寄存器中写数据是有意义的。


点击(此处)折叠或打开

  1. buf[0] = recv;
  2. buf[1] = recv;
  3. buf[2] = recv;
  4. send = ~buf[0];
  5. send = ~buf[1];
  6. send = ~buf[2];
优化后的结果可能为 不是每次从recv的内存地址中将数据写入到寄存器中,buf[1]是从存储buf[0]的寄存器中读取。
实际是要每次从recv所指向的内存单元中读取。
后面讲buf的数据写入到相应的内存地址时(可能为寄存器),对同一个变量赋值,只取最后一个。



1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 


2、多任务环境下各任务间共享的标志应该加volatile; 


3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义; 
阅读(1331) | 评论(0) | 转发(0) |
0

上一篇:关于指针

下一篇:MSB 和 大小端

给主人留下些什么吧!~~