0

我的问题是通用的,与任何特定的微控制器无关。下面是写入硬件寄存器地址的代码。在这段代码中,我试图写几个值,一个接一个。

unsigned int *p;  //declare a pointer

p = (int *) 0x200;  //point to hardware register address

*p = 0x12;  // write to hardware register address

*p = 0xA5;  // write to hardware register address

*p = 0xff;  // write to hardware register address

以上需要更正吗?

4

1 回答 1

9

如果要写入硬件寄存器,通常需要使用volatile关键字:

volatile unsigned int *p;

如果没有volatile,优化编译器可能会断定前两次写入是不必要的(因为该值会立即被覆盖)并将它们优化掉。

这篇Wikipedia 文章有更多关于volatile.

于 2013-03-23T04:59:36.143 回答