Chinaunix首页 | 论坛 | 博客
  • 博客访问: 235235
  • 博文数量: 40
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 322
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-05 19:46
个人简介

文章分类

全部博文(40)

文章存档

2022年(1)

2018年(2)

2013年(5)

2011年(1)

2010年(14)

2009年(5)

2008年(12)

分类:

2010-05-21 12:06:04

5月21日

没有使用volatile的一个错误

bootloader程序写一个寄存器时,由于没有使用volatile产生了错误,一直不能理解.
 
程序如下:
     unsigned int data;
     unsigned int *data_w;
 
     data_w = 0xbb800800; /*0xbb800800是一个器件寄存器地址*/
     data = 0x1234;
     *data_w = data;
     printf("0xbb800800:%08x\r\n", *((unsigned int*)0xbb800800));
     printf("0xbb800800:%08x\r\n", *((unsigned int*)0xbb800800));
打印结果如下:
    0xbb800800:0x1234
    0xbb800800:0x14
如果在变量定义前都加上volatile打印结果就正常:
    0xbb800800:0x1234
    0xbb800800:0x1234
阅读(1708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~