32位单片机存储地址的理解

1.32位操作系统 是指操作系统可以处理32位长的地址。

2.一个32位的地址可以表示的内存范围是 2^32个地址,每个地址指向一个存储单元。

3.一个存储单元是Byte 不是bit

4.2的32次方 等于 4,294,967,296,也就是 4GB。这是内存空间的最大范围

        2^32=2^2        *         2^10         *         2^10         *        2^10

                   4           *         KB                        MB                     GB

下图是stm32f103c8t6的存储器映射图

由图中可以知道Flash memory的存储空间范围是0x0800 0000-0x0801 FFFF

地址相减0x0801 FFFF-0x0800 0000=0x1 FFFF 

换算成十进制为131071(B)

那么换算成KB 则为127KB 所以Flash的大小为128KB 这和c8t6手册上的flash大小是一样的

       

因为存储单元的单位是Byte (字节) 所以

  • 当你存储一个多字节的数据(比如 uint32_t 类型,它占用4字节),这些字节会存储在连续的内存地址中。
  • 如果 uint32_t 变量从地址 0x1000 开始,它将占用 0x10000x1003 这4个字节的地址。
  • 比如说 我定义一个数值 uint32_t a=10; 假设存储在0x1000

    在实际使用中,STM32 微控制器和大多数 ARM 架构的处理器采用小端模式

    假设:定义了两个变量

    int myVar = 123;
    int *myPtr = &myVar;

    那么如果myVar的地址为0x2000 0000
    *myPtr的地址为0x2000 0004
    那么

    所以32位系统中 一个指针占4个字节

    作者:花火QAQ

    物联沃分享整理
    物联沃-IOTWORD物联网 » 32位单片机存储地址的理解

    发表回复