STM32采用的Crotex_M3内核存储使用哈佛结构,程序存储器,数据存储器,寄存器,外设都被分配在4G_bytes(32bits总线宽度)的线性空间上,但并不是所有的空间都是有效的。
存储器采用小端模式。
小端模式和大端模式
定义:
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
32位的数据0x12345678从地址0x20000000开始存储,小端和大端的存储区别如下图
小端模式
大端模式
SRAM
SRAM的起始地址从0x2000 0000地址开始,可以进行字(32-bits),半字(16-bits),字节(8-bits)访问
bit-band
STM32的SRAM和外设寄存器并不能进行bit访问,但STM32对所有的SRAM和外设寄存器映射了两个被称为bit-band的区域,对这个区域的字写对应到想用SRAM的bit写。
区域映射算法
bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)
bit_band_base为bit-band的起始地址,bit-band有两个区域0x2200 0000和0x4200 0000分别对应SRAM和外设
byte_offset SRAM对应起始地0x20000000的偏移地址,
bit_number 需要访问的bit号
例如需要访问0x2000 0300内存bit-2,公式应该是
0x22006008 = 0x22000000 + (0x300*32) + (2*4).
Flash
flash的读写接口(FLITF)包含读预期缓存,选项字节,Flash写/擦除,读/写保护
读:读flash需要编写等待数,不同的SYSCLK等待数不同
指令预期,这个功能在系统复位后自动开启
半周期,用于节约功耗
写和擦除
flash只能进行半字的写,要进行擦除和写操作时,内部RC振荡器(HSI)必须打开
flash的擦除操作能进行页和全flash擦除
STM32的页被分为1kbyte或者2Kbyte
Boot
STM32提供3种不同boot模式
Main Flash memory: 程序从0x80000000开始运行
System memory;启动ISP模式
Embedded SRAM:从此从SRAM运行
上一篇:stm32之nRF24L01无线模块(1):SPI2到SPI1的移植
下一篇:如何从keil编译结果看程序占用STM32的flash和SRAM