2026/1/2 5:41:31
网站建设
项目流程
成都房产网官方网站,哈尔滨寸金网站建设公司口碑,网站建设要做哪些工作室,wordpress 微信 登陆提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录一、存储器和寄存器1.存储器1.1常见的存储器介绍1.1RAM1#xff09;SRAM2#xff09;DRAM1.2ROM1#xff09;MASK ROM2#xff09;PROM3#xff09;EPROM4…提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录一、存储器和寄存器1.存储器1.1常见的存储器介绍1.1RAM1SRAM2DRAM1.2ROM1MASK ROM2PROM3EPROM4E2PROM5Flash6硬盘磁盘1.2STM32的存储器1.3存储器映射1.4STM32具体存储器映射图1Block02Block13Block24Block3,4,52寄存器2.1什么是寄存器2.2寄存器映射一、存储器和寄存器1.存储器1.1常见的存储器介绍存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件有了存储器计算机才具有记忆功能1.1RAM1SRAMStatic Random-Access Memory静态随机存取存储器。是RAM的一种所谓的“静态”是指这种存储器只要保持通电里面储存的数据就可以恒常保持。是用电路存储数据基本结构就是前面大家学习过的那种触发器结构比如D触发器。容量一般较低用于高速缓存。比如芯片内部的寄存器就可以看成一种SRAM。2DRAM动态随机存储器DRAM的存储单元以电容的电荷来表示数据有电荷代表1无电荷代表0。但时间一长代表1的电容会放电代表0的电容会吸收电荷因此它需要定期刷新操作这就是“动态Dynamic”一词所形容的特性。刷新操作会对电容进行检查若电量大于满电量的1 / 2则认为其代表1并把电容充满电若电量小于1 / 2则认为其代表 0并把电容放电藉此来保证数据的正确性。1.2ROMROM 是“Read Only Memory”的缩写意为只能读的存储器。由于技术的发展后来设计出了可以方便写入数据的ROM而这个“Read Only Memory”的名称被沿用下来了现在一般用于指代非易失性半导体存储器包括后面介绍的 FLASH 存储器有些人也把它归到 ROM 类里边。1MASK ROMMASK掩膜ROM 就是正宗的“Read Only Memory”存储在它内部的数据是在出厂时使用特殊工艺固化的生产后就不可修改其主要优势是大批量生产时成本低。当前在生产量大数据不需要修改的场合还有应用。2PROMPROMProgramable ROM为可编程ROM。但是只供用户写入一次。3EPROMEPROMErasable Programmable ROM是可重复擦写的存储器它解决了PROM芯片只能写入一次的问题。这种存储器使用紫外线照射30分钟芯片内部擦除数据擦除和写入都要专用的设备。现在这种存储器基本淘汰被EEPROM取代。4E2PROME2PROMElectrically Erasable Programmable ROM是电可擦除存储器。EEPROM可以重复擦写它的擦除和写入都是直接使用电路控制不需要再使用外部设备来擦写。而且可以按字节为单位修改数据无需整个芯片擦除。现在主要使用的ROM芯片都是EEPROM。5FlashFLASH存储器又称为闪存它也是可重复擦写的储器部分书籍会把FLASH存储器称为 FLASH ROM但它的容量一般比EEPROM大得多且在擦除时一般以多个字节为单位。6硬盘磁盘又称磁盘是靠磁性来存储数据的。1.2STM32的存储器STM32包含片内SRAM64K它可以以字节、半字16位或全字32位访问。SRAM的起始地址是0x2000 0000。片内Flash最大可达2M。1.3存储器映射什么叫存储器映射呢存储器本身并不具备地址信息那么CPU要准确找到存储某个信息的存储单元就必须为这些单元分配一个相互可区分的标识这个标识就是常说的地址编码。STM32中集成多种存储器各种外设也需要分配地址同一类型的存储器当作一组block为每一个block分配一个数值连续存储单元数相等以16进制表示的自然数集合作为存储器Block的地址编码。这种自然数集合与存储器Block的对应关系就是存储器映射。存储器映射其实就是将芯片理论上的地址分配给各个存储器。需要注意的是存储器映射并不是只针对SROM和片内Flash做地址映射其实所有的片内外设比如IO口都需要地址也都需要做映射。1.4STM32具体存储器映射图芯片能访问的存储空间有多大是由谁定的这个是由芯片的地址总线的数量决来定的STM32芯片内部的地址总线为32根。所以STM32有4G的地址空间。这个4GB的是STM32理论分配的地址空间。也就是说实际上并不是有这么大的存储单元很多地址都是预留地址空着还没用呢。程序存储器、数据存储器、寄存器和输入输出端口被组织在这个4GB的线性地址空间内。数据字节以小端格式先存低位再存高位存放在存储器中。ARM把可访问的存储器空间分成8个主要块每个块为512MB。这个容量是非常大的因此芯片厂商就在每块容量范围内设计各自特色的外设。但是每块区域容量占用越大芯片成本就越高所以说我们使用的 STM32 芯片都是只用了其中一部分。ARM 在对这 4GB 容量分块的时候是按照其功能划分每块都有它特殊的用途。在这8个Block里面要特别注意Block0、Block1和Block2这3个块。因为其中包含了STM32芯片的内部 Flash、RAM和片上外设。下面还是根据存储器映射图内信息来简单的介绍下这3个Block里面的具体区域功能划分。1Block00x0000 0000-0x0007 FFFF取决于BOOT引脚为 FLASH还是系统存储器还是SRAM 的别名。512K0x0008 0000-0x07FF FFFF预留。1M0x0800 0000-0x0807 FFFF片内 FLASH我们编写的程序就放在这一区域512K0x0808 0000-0x1FFF EFFF预留。383M0x1FFF F000-0x1FFF F7FF系统存储器里面存放的是 ST 出厂时烧写好的ISP自举程序用户无法改动。使用串口下载的时候需要用到这部分程序。2K0x1FFF F800-0x1FFF F80F可选字节用于配置读写保护、BOR级别、软件/硬件看门狗以及器件处于待机或停止模式下的复位。当芯片不小心被锁住之后我们可以从RAM里面启动来修改这部分相应的寄存器位。0x1FFF F810-0x1FFF FFFF预留。2Block1Block1用于设计片内的SRAM例如STM32F103ZET6的SRAM是64KB。从存储器映射图中可以看到Block1内部又划分了几个功能块我们按地址从低到高顺序依次介绍。0x2000 0000-0x2000 FFFFSRAM容量为 64KB。0x2001 0000-0x3FFF FFFF预留。3Block2Block2用于设计片内外设根据外设总线速度的不同Block2被划分为AHB和APB 两部分APB又被分成APB1和APB2。这些都可以在上面存储器映射图中可看到。0x4000 0000-0x4000 77FFAPB1总线外设。0x4001 0000-0x4001 57FFAPB2总线外设。0x4001 8000-0x4002 33FFAHB总线外设。4Block3,4,5在Block3、Block4、Block5中包含了FSMC扩展区域可用于扩展如 SRAMNORFLASH 和NANDFLASH等的外部存储器。2寄存器2.1什么是寄存器前面我们学习了存储器ROM和RAM还包括我们所有的片上外设我们都可以称为存储器STM32通过存储器映射就可以找到这些存储器。我们编程的时候用的最多的还是寄存器那么什么叫寄存器呢在存储器 Block2 这块区域设计的是片上外设它们以4个字节为1个单元共 32bit每一个单元对应不同的功能当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址然后通过 C 语言指针的操作方式来访问这些单元如果每次都是通过这种地址的方式来访问不仅不好记忆还容易出错这时我们可以根据每个单元功能的不同以功能为名给这个内存单元取一个别名。这个别名就是我们经常说的寄存器。一句话总结寄存器是单片机内部一种特殊的内存可以实现对单片机各个功能的控制。2.2寄存器映射这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。寄存器映射在ST提供的头文件stm32f10x.h中已经通过预编译的形式完全映射好了以后如果再操作某个特定外设的时候就不用直接操作地址直接操作对应的寄存器名就可以了。比如PA这组IO端口的映射// 外设基址#definePERIPH_BASE((uint32_t)0x40000000)// APB2外设的基址#defineAPB2PERIPH_BASE(PERIPH_BASE0x10000)// GPIOA 外设的基址#defineGPIOA_BASE(APB2PERIPH_BASE0x0800)// 做了类型转换地址仍然是GPIOA 外设的基址#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)