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
开始,它将占用 0x1000
到 0x1003
这4个字节的地址。比如说 我定义一个数值 uint32_t a=10; 假设存储在0x1000
在实际使用中,STM32 微控制器和大多数 ARM 架构的处理器采用小端模式。
假设:定义了两个变量
int myVar = 123;
int *myPtr = &myVar;
那么如果myVar的地址为0x2000 0000
*myPtr的地址为0x2000 0004
那么
所以32位系统中 一个指针占4个字节
作者:花火QAQ