历史上的今天
今天是:2024年10月10日(星期四)
2018年10月10日 | STM32F1x系列内存结构
2018-10-10 来源:eefocus
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运行
史海拾趣
|
许久以来,一直想说说我的外甥。 说外甥,不仅是因为我是他的舅舅,而是因为他是最让我想不通的一个人。 认识我以及我的外甥的许多朋友,无不为我的外甥感到异常的可惜和不解。 是的,我们想不通,他究竟为什么要 ...… 查看全部问答> |
|
比如我们的手机以modem方式插入电脑后,会虚拟出很多个串口。 其中包括一般的串口和modem串口。 这是怎么实现的呢,大概原理是什么。 我的理解是:一个USB设备包含多个端点(Endpoint),一般是4个,每个端点用作不同的功能,因此当插入USB主机 ...… 查看全部问答> |
|
blackfin 561 PROGRAMMABLE FLAGS 的问题 FIOn_FLAG_D,FIOn_FLAG_S,FIOn_FLAG_C,FIOn_FLAG_T这四个寄存器究竟有什么作用,具体的用法是怎么样的?看了好久的硬件手册也没有明白。哪位仁兄能指点一下啊?… 查看全部问答> |
|
我的T0,T1已经用了,现在要用串口,所以模拟了一个,要用一个定时器,正好我的还有T2,我就是想设置成定时器,因为模拟串口要改定时的值,所以不用自动重装模式,只能用捕获了吧。我的设置如下: T2CON = 0X01;//捕获模式 TL2 = rs_START_BIT_L ...… 查看全部问答> |
|
求linux驱动开发的电子书籍,能给链接是最好的,要不可以直接发到我邮箱。jamesf1982@163.com 非常感谢你的支持,对于给予帮助的朋友,每人加50分奖励… 查看全部问答> |




