当我访问我的微控制器中的内存值时,为什么它指向我的数据值的末尾?

When I'm accessing memory values in my microcontroller why is it pointing to the end of my data value?

我试图在我的微控制器内存中获取地址的值。地址位于 0x1fff7000,这是内存块的开始(因此之前的任何内容都是未定义的)。在我的代码中,我有 char *ptr = (char *)BASE_ADDR;,其中 #define BASE_ADDR ((uint32_t)0x1FFF7000)。我在 0x1FFF7000 的价值是 0x12345678,我 100% 知道它在那里。

在 GDB 中,我正在做 (gdb) p/x *ptr,我的 return 值为 = 0x78。为什么它在 0x78 而不是 returning 0x12345678 甚至 0x12

定义为uint32_t *ptr = (volatile char *)BASE_ADDR;然后读取。

(char *) 可以引用-128到127之间的值。

另请阅读字节顺序。 https://en.wikipedia.org/wiki/Endianness

正如我在您的其他问题中所写的那样 - 在您对 uC 进行编程之前,您需要学习一些基础知识。按位运算、字节顺序等

因为你有一个小端system/mcu,这意味着首先存储最低有效字节。在您的示例中,存储为 32 位整数的 0x12345678 将在内存中看起来像 78 56 34 12 作为原始数据。