储存器
Last updated
Last updated
https://zhuanlan.zhihu.com/p/511268958 https://zhuanlan.zhihu.com/p/498223077 https://blog.csdn.net/aningxiaoxixi/article/details/104067978 https://blog.csdn.net/qq_25814297/article/details/85236505 https://blog.csdn.net/weixin_45003437/article/details/102846730#::text=1%EF%BC%89stm32%E6%98%AF32bit%E5%A4%84%E7%90%86%E5%99%A8%EF%BC%8C%E6%89%80%E4%BB%A5%E5%AE%83%E7%9A%84%E5%AD%97%E6%98%AF32bit%E7%9A%84%20%28%E4%B8%80%E6%AC%A1%E5%A4%84%E7%90%864%E5%AD%97%E8%8A%82%E9%95%BF%E5%BA%A6%E7%9A%84%E6%95%B0%E6%8D%AE%29%E3%80%82,%E5%8D%8A%E5%AD%97%E8%87%AA%E7%84%B6%E5%B0%B1%E6%98%AF16bit%20%282%E5%AD%97%E8%8A%82%29%EF%BC%9B%E5%AD%97%E8%8A%82%E6%98%AF8bit%E3%80%82%201%E3%80%81stm32%E5%92%8C%E4%BC%A0%E7%BB%9F%E7%9A%84arm%E7%9B%B8%E6%AF%94%E6%9C%80%E5%A4%A7%E7%9A%84%E5%A5%BD%E5%A4%84%E5%B0%B1%E6%98%AF%E4%B8%8D%E9%9C%80%E8%A6%81%E5%AF%B9%E9%BD%90%EF%BC%8C%E4%B8%89%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%86%85%E5%AD%98%E4%B8%AD%E6%97%A0%E7%BC%9D%E7%9A%84%E5%AD%98%E6%94%BE%E3%80%82 https://zhuanlan.zhihu.com/p/22935354 https://blog.csdn.net/shizheng_Li/article/details/108899695 https://blog.csdn.net/liujianyangbj/article/details/108074167#::text=2%5E32%20%3D%204GB.%20%E6%88%91%E5%BD%93%E6%97%B6%E7%9C%8B%E5%88%B0%E8%BF%99%E4%B8%AA%E5%85%AC%E5%BC%8F%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E6%B2%A1%E5%A4%AA%E5%9C%A8%E6%84%8F%EF%BC%8C%E5%90%8E%E6%9D%A5%E6%88%91%E8%87%AA%E5%B7%B1%E6%8D%A2%E7%AE%97%E4%BA%86%E4%B8%80%E4%B8%8B%EF%BC%8C%E5%8F%91%E7%8E%B0%E5%92%8C%E6%88%91%E7%90%86%E8%A7%A3%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A0%B7%EF%BC%8C%E6%88%91%E6%8D%A2%E7%AE%97%E5%87%BA%E6%9D%A5%E5%90%8E%E4%B8%8D%E6%98%AF4G%E8%80%8C%E6%98%AF512M%E4%B9%9F%E5%B0%B1%E6%98%AF0.5G%E3%80%82.%2032%E4%BD%8D%E5%B0%B1%E5%8F%AF%E4%BB%A5%E8%A1%A8%E7%A4%BA%E6%9C%892%E7%9A%8432%E6%AC%A1%E7%A7%8D%E6%83%85%E5%86%B5%EF%BC%8C%E5%B0%B1%E8%A1%A8%E7%A4%BA%E5%8F%AF%E4%BB%A5%E6%8C%87%E5%90%912%2032%20%E4%B8%AA%E5%9C%B0%E5%9D%80%EF%BC%8C%E8%80%8C%E6%9C%80%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97%E5%B0%B1%E8%A1%A8%E7%A4%BA%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%E7%9A%84%E5%86%85%E5%AD%98%E6%9C%80%E5%A4%A7%E7%9A%84%E5%AE%B9%E9%87%8F%EF%BC%8C%E5%86%8D%E5%A4%A7%E4%BA%86%EF%BC%8C%E7%94%B1%E4%BA%8E%E5%9C%B0%E5%9D%80%E8%A1%A8%E7%A4%BA%E4%B8%8D%E4%BA%86%EF%BC%8C%E6%89%80%E4%BB%A5%E5%B0%B1%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E4%BA%86%E3%80%82.%20%E6%89%80%E4%BB%A5%E6%88%91%E5%B0%B1%E6%8C%89%E4%B8%8B%E9%9D%A2%E6%96%B9%E6%B3%95%E8%BF%9B%E8%A1%8C%E4%BA%86%E6%8D%A2%E7%AE%97%EF%BC%9A.,-1%20GB%20%3D%200.5%20GB.%20%E8%BF%99%E6%A0%B7%E4%B8%80%E7%AE%97%E5%B0%B1%E6%98%AF32%E4%BD%8D%E6%9C%80%E5%A4%A7%E5%8F%AA%E8%83%BD%E5%AF%BB%E5%9D%80%E7%9A%84%E8%8C%83%E5%9B%B4%E5%B0%B1%E6%98%AF%200.5GB%E5%95%8A%20%E6%80%8E%E4%B9%88%E7%AE%97%E5%87%BA%E6%98%AF4GB%E5%91%A2%EF%BC%9F https://blog.csdn.net/qq_58759694/article/details/127138101.
储存器指可以存储数据的设备,包括flash,ram
默认B代表Byte字节,b代表bit位 1B=8b 1GB=1024MB 1MB=1024KB 1KB=1024B 1B=8bit 字: (32位系统中总线系统为32bit)因此一个字占4个字节(32位)。
STM32一共有32根地址线,通过地址线上的电平跳变找到想要的地址,每根地址线有1与0两种状态,则其寻址范围为2的32次方,即4282384384,即4G个地址,也就是说STM32的一个寻址范围为0X0000 0000到0Xffff ffff,每一个地址对应1个字节,那么也就是说它可以读取的一个最大储存器的大小为4282384384个字节即4GB。
不是,STM32的32不是32根地址线的意思,而是表示MCU芯片内部CPU在处理数据时,每次可以处理的数据位宽为32个bit。正是由于这个原因,STM32 内部的寄存器大小都是32位的,刚好等于位宽。
某个芯片是32位的,但是它的地址线完全可以只有16根、或者8根对于 STM32 来说,刚好碰巧的是,CPU能够处理的数据位宽与地址线数量恰好都是 32,所以不少小伙伴往往被搞迷糊了,认为是一回事。
给特定功能的的储存单元取的别名这个别名就叫做寄存器,所以寄存器只是特定功能的的一块存储区域的名字而已
寄存器的地址索引一个地址实际上是对应8位的一块区域,那么由于一块寄存器它是32位也就是4个字节,那么每一个寄存器实际上是需要占用4个地址的,也就是说它的寄存器间隔是4。我们通常通过访问一个寄存器4个地址的首地址,写入32位的数据,一次性操作寄存器,当然也可以依次操作一个寄存器的4个地址,每个地址写入8个数据,完成操作
51支持按位操作,32不支持,只能整个字节或字的位运算来管理某位
大端模式: 低位字节存在高地址上,高位字节存在低地址上 小端模式: 高位字节存在高地址上,低位字节存在低地址上 MDK5编译器,默认使用小段模式;
使用代码验证大小端模式 可以使用以下代码验证编译器使用的是哪种模式: char x0,x1; uint16 value = 0x1234;
存储器本身没有地址信息,对存储器分配地址的过程称为存储器映射,也就是说可以通过这个地址,访问这个存储器的对应存储单元。
存储器的一个地址不都是对应一个字节大小的储存单元,主要看数据线的多少,比如以下这一款XRAM
其数据线有16个,所以一个地址对应2个字节 而它又有19个地址线,因此其地址范围为0到2的19次方,即524288=512K,又一个地址对应2字节,所以其大小为512K*2B=1024KB=1MB
ST将STM32可支持的4GB(2^32)地址空间分成8个块
从上图可以看出SRAM与FLASH最大都支持512MB,但F103ZET6实际FLASH只有512KB,SRAM有64KB(sarmf10xx都是64,flash大小 根据小/中/大容量产品不同) >这个表可以在**数据手册-存储器映像章节**找到,但不是上图的形式 ### Block 0(FLASH) 用于存储代码,该块地址映射到了一块片内的FLASH上,掉电保存代码,里面存储着官方编写的Bootloader(Bootloader程序是我们无法更改的),用于ISP下载,我们平时使用串口下载程序就是 这块内存的代码在起作用。同样我们编写的用户代码也是这一块区域 **大小**
具体分区如下:
这个表可以在数据手册-存储器映像章节找到,但不是上图的形式
这一块就是我们通常意义上的运存,该块地址映射到了一块片内的RAM上。它保留了一块区域,这块区域并不是说在物理上不允许或没有使用到,而是这块地址没有被映射,如果需要增加外置RAM可以将其映射到这段地址
这个表可以在数据手册-存储器映像章节找到,但不是上图的形式
所谓的外设实际上就是GPIO,UART,定时器这一类外设,通过操作寄存器操作(寄存器实际上也是存储单元),这一段地址被映射到了这些外设对应的寄存器上,通过这些地址操作寄存器,实现外设的控制,也是我们学习的重点。 所有的外设基本可以以总线为划分,在总线地址上偏移,
具体可以参考参考手册-2.3存储器映像章节,有完整的外设与地址的对应表,也可以参考数据手册-存储器映像章节