1 为啥STM32单片机内部存储器是4G?
程序存储器、数据存储器、寄存器、输入输出端口 共同组织在4G的空间上。2^32=4G也就是0x0000_0000——0xFFFF_FFFF这一大块空间。 单片机内核为32位,故可寻址范围是32位,可访问的存储器共分为8个块,一个块512M字节。这其中有些位是保留部分,目前暂未使用。
2 数据的存储是小端还是大端模式?
- 小端模式:低地址存数据的低位。高地址存数据的高位。
- 大端模式:低地址存数据的高位。高地址存数据的低位。
stm32单片机的存储器采用小端模式进行存储数据
3 何为存储器映像?
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。
通俗的讲就是单片机中的不同外设寄存器,程序储存块,都对应在4G,空间的某一小块,这一块地址就对应这个外设的映像。以后改外设寄存器就在此处改。
通过图片可以看出映射到底是咋回事了 GPIOA的映射地址在0x40010800-0x40010bff 可以看出GPIOA只用了0x4ff个字节这么多。GPIOA的所有配置寄存器以及其他寄存器都在这个范围内控制。这就是映像,还可以看出GPIO是挂在APB2总线上,其操作最快速度可以达到72M。
4 STM32单片机的内置SRAM多大?有啥用?
STM32片内自带SRAM和FLASH,FLASH是用来存储程序的,SRAM是用来存储程序运行中的中间变量,通常不同型号的STM32的SRAM和FLASH大小是不相同的。ZET6这款flash有512k字节。STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问。SRAM的起始地址是0x2000 0000
5 FLASH与EEPROM区别在哪?
FLASH存储器又成为闪存,它与EEPROM都是掉电后数据不丢失的存储器,但是FLASH得存储容量都普遍的大于EEPROM,,在存储控制上,最主要的区别是FLASH芯片只能一大片一大片地擦除,而EEPROM可以单个字节擦除。at24cXX这种芯片就是EEPROM芯片,存储空间小。
6 stm32中啥是位段?
位操作就是可以读/写单独的一个比特位,在STM32中没有像51单片机的sbit来实行位定义,但是它可以通过位带别名区来实现
Cortex™-M3存储器映像包括两个位段(bit-band)区。这两个位段区将别名存储器区中的每个字映射到位段存储器区的一个位,在别名存储区写入一个字具有对位段区的目标位执行读-改-写操作的相同效果
bit_word_addr = bit_band_base + (byte_offset× 32) + (bit_number× 4)
其中:
- bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。
- bit_band_base是别名区的起始地址。
- byte_offset是包含目标位的字节在位段里的序号
- bit_number是目标位所在位置(0-31)
例子:
下面的例子说明如何映射别名区中SRAM地址为0x20000300的字节中的位2:
0x22006008 = 0x22000000 + (0x300× 32) + (2× 4).
对0x22006008地址的写操作与对SRAM中地址0x20000300字节的位2执行读-改-写 操作有着相同的效果。
今天就暂时分享这么多吧 如果大家喜欢,感觉学到了,烦请大家进行转载,并关注小编,你们的关注就是,小编总结知识点的动力。
2019.10.1 祝祖国繁荣昌盛 大家国庆快乐