【发布时间】:2014-07-13 19:08:44
【问题描述】:
如何访问内存映射外设的 SFR(特殊功能寄存器)。
我如何确保编译器不会弄乱字节顺序?
例如,如何访问地址0x00080的32位寄存器,位是如何映射的?请不要羞于进入细节和低级。
【问题讨论】:
-
FWIW,目前还没有标签
sfr。我认为不应该仅仅为此而创建它。 -
还有另一个提示:SFR Definitions。这似乎只对 Cx51 处理器有效。
-
sfr、sfr16和sbit可能是特定于您的工具链和目标体系结构的编译器扩展,或者它们可能是在目标特定标头中定义的类型别名。无论哪种方式,您都可以很好地指定工具链和目标以获得任何有用的答案。在大多数架构上,SFR(或更一般的片上外设寄存器)和内存映射,因此访问就像访问任何其他内存一样 - 但必须声明为volatile。大多数目标没有位可寻址内存或 SFR - 8051 是这样的,但不是 32 位。 -
@Clifford 我试图简化我的问题。我的设备有内存映射外围设备。 TMR0(32 位)对应字节 0x80。如何访问此内存位置,以及如何处理字节序?
-
关键问题:什么 CPU?如果没有这个重要的细节,任何回应都将是 WAG。