2026/5/14 6:17:08
网站建设
项目流程
珠海网站推广公司,青岛网站建设系统,建筑设计防火规范2021,陕西网络营销外包专业定制一、寄存器 ≠ 存储器- 本质区别- 存储器#xff08;Memory#xff09;#xff1a;是一片连续的存储区域#xff0c;主要用来存程序代码、变量、数据等#xff0c;比如我们常说的 Flash 和 SRAM。它的地址是连续的#xff0c;就像一个大仓库#xff0c;按地址来存取。- …一、寄存器 ≠ 存储器- 本质区别- 存储器Memory是一片连续的存储区域主要用来存程序代码、变量、数据等比如我们常说的 Flash 和 SRAM。它的地址是连续的就像一个大仓库按地址来存取。- 寄存器Register是外设比如 GPIO、ADC、DMA里的专用硬件单元用来控制外设的工作模式、状态和数据传输。每个寄存器都有一个独立的地址但这些地址是离散分布在“外设地址空间”里的不属于存储器地址范围。- 形象比喻你可以把整个 STM32 的地址空间想象成一个大商场- 存储器Flash/SRAM是商场里的大超市货架是连续编号的你按编号就能找到商品数据/代码。- 寄存器是商场里各个店铺的收银台、开关、监控器每个设备都有自己的位置地址用来控制店铺的运行它们不连续也不属于超市货架。二、存储器映像到底是什么STM32 把所有能被 CPU 访问的硬件资源Flash、SRAM、寄存器等都映射到了一个统一的 32 位地址空间里这就是“存储器映像”。简单来说就是给每个硬件单元不管是存储器还是寄存器都分配了一个唯一的地址CPU 只要通过这个地址就能读写它不用区分它是内存还是外设。图源b站江协科技stm32入门教程比如- 0x08000000 开始的地址是 Flash 存储器存程序- 0x20000000 开始的地址是 SRAM存变量- 0x40000000 开始的地址是 外设寄存器比如 GPIO、ADC 的控制寄存器三、为什么要这么设计这样设计的好处是CPU 可以用统一的指令来访问所有资源不用为不同硬件设计不同的指令。比如- 读内存数据和读 GPIO 寄存器里的状态用的是同一条 LDR 指令- 写变量到 SRAM 和配置 DMA 寄存器用的是同一条 STR 指令。psLDRLoad Register和 STRStore Register是ARM 汇编里最核心的数据传输指令负责在寄存器和内存或存储器映射的寄存器之间搬运数据。LDR把内存/寄存器地址里的数据加载到 CPU 寄存器中读操作。STR把CPU 寄存器里的数据存储到内存/寄存器地址中写操作。