[英]Why is my program accessing values of the binaryString array when I try to print "value"?
[英]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.