簡體   English   中英

當我在我的微控制器中訪問 memory 值時,為什么它指向我的數據值的末尾?

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

我試圖在我的微控制器中獲取 memory 中地址的值。 地址在0x1fff7000並且是 memory 塊的開始(所以之前的任何東西都是未定義的)。 在我的代碼中,我有char *ptr = (char *)BASE_ADDR; 其中#define BASE_ADDR ((uint32_t)0x1FFF7000) 我在0x1FFF7000的值是0x12345678 ,我 100% 知道它在那里。

在 GDB 中,我正在執行(gdb) p/x *ptr並且我的返回值為$6 = 0x78 為什么它在0x78而沒有返回0x12345678甚至0x12

因為您有一個 little-endian system/mcu,這意味着首先存儲最低有效字節。 在您的示例中,存儲為 32 位 integer 的0x12345678將在 memory 中顯示為78 56 34 12作為原始數據。

將其定義為uint32_t *ptr = (volatile char *)BASE_ADDR; 然后閱讀。

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

另請閱讀有關字節序的信息。 https://en.wikipedia.org/wiki/Endianness

正如我在您的其他問題中所寫的那樣 - 在您對 uC 進行編程之前,您需要學習一些基礎知識。 位運算,字節序等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM