STM32中的外设寄存器在哪里?它们是在皮质m核心还是在外围单位本身?

STM32中的外设寄存器在哪里?它们是在皮质m核心还是在外围单位本身?,stm32,cortex-m,Stm32,Cortex M,我有两个问题。 1-stm32微控制器的内存是在cortex-m内核内部还是外部?如果它在cortex-m core通用用户指南的方框图中,为什么不显示在cortex-m core内部 2-我试图理解stm32体系结构,但我面临一个模棱两可的问题。 如图所示,参考手册中说USART单元有一些寄存器i.e数据寄存器。 但是,如果第一个问题的答案在大脑皮层m核的记忆区域,那么这些寄存器也存在。它们到底在哪里?每个寄存器有两个寄存器吗?或者它们是居住在皮质m核心还是外围本身? 它与内存映射i/o定义

我有两个问题。 1-stm32微控制器的内存是在cortex-m内核内部还是外部?如果它在cortex-m core通用用户指南的方框图中,为什么不显示在cortex-m core内部

2-我试图理解stm32体系结构,但我面临一个模棱两可的问题。

如图所示,参考手册中说USART单元有一些寄存器i.e数据寄存器。 但是,如果第一个问题的答案在大脑皮层m核的记忆区域,那么这些寄存器也存在。它们到底在哪里?每个寄存器有两个寄存器吗?或者它们是居住在皮质m核心还是外围本身?
它与内存映射i/o定义有关吗?

CPU内核中唯一的存储是寄存器,包括通用和专用寄存器。其他一切都是外部的,包括RAM和ROM

外围控制寄存器基本上存在于外围设备内部。但是,CPU访问它们的方式与访问RAM或ROM的方式相同;这就是内存映射的含义,它向您显示哪些地址是指RAM、ROM、外围寄存器和其他内容。请注意,大多数内存映射都未使用-32位地址空间能够寻址4GB内存,而且据我所知,没有任何微控制器具有如此大的存储空间。相应的组件根据地址“响应”内存总线上的读写请求

对于基本概述,内存映射IO相当不错


请注意,这些都不是Cortex-M所特有的。几乎所有现代微处理器设计都使用内存映射。还要注意,Cortex-M的实际总线架构相当复杂,因此您从Wikipedia文章中获得的任何理解都将是对真正实现的抽象。

CPU内核中唯一的存储是寄存器,包括通用和专用寄存器。其他一切都是外部的,包括RAM和ROM

外围控制寄存器基本上存在于外围设备内部。但是,CPU访问它们的方式与访问RAM或ROM的方式相同;这就是内存映射的含义,它向您显示哪些地址是指RAM、ROM、外围寄存器和其他内容。请注意,大多数内存映射都未使用-32位地址空间能够寻址4GB内存,而且据我所知,没有任何微控制器具有如此大的存储空间。相应的组件根据地址“响应”内存总线上的读写请求

对于基本概述,内存映射IO相当不错


请注意,这些都不是Cortex-M所特有的。几乎所有现代微处理器设计都使用内存映射。还要注意,Cortex-M的实际总线架构相当复杂,因此您从维基百科文章中获得的任何理解都将是对真正实现的抽象。

外围设备通过总线连接到核心。地址解码器知道由特定总线处理的地址

不仅外围设备通过总线连接。记忆是以同样的方式连接起来的。总线通过桥互连。那些桥知道如何指挥交通

从核心的角度来看,外围寄存器的工作方式与存储单元相同

那么差距呢。通常,如果地址解码器不理解地址,它将在ARM术语中生成称为HardFault的异常硬件错误


细节非常复杂,除非你打算设计自己的芯片,否则寄存器级程序员不需要

外围设备通过总线连接到核心。地址解码器知道由特定总线处理的地址

不仅外围设备通过总线连接。记忆是以同样的方式连接起来的。总线通过桥互连。那些桥知道如何指挥交通

从核心的角度来看,外围寄存器的工作方式与存储单元相同

那么差距呢。通常,如果地址解码器不理解地址,它将在ARM术语中生成称为HardFault的异常硬件错误


细节非常复杂,除非你打算设计自己的芯片,否则寄存器级程序员不需要

查看下图,显示STM32 Cortex-M4处理器的框图。 我突出显示了左上角的CPU核心;以及微控制器内部的其他组件

顾名思义,CPU核心就是核心;但微控制器还集成了闪存、RAM和许多外围设备;除了调试行之外,几乎所有核心之外的内容都可以访问 通过总线矩阵,这同样适用于ROM、RAM和集成外围设备

请注意,微处理器和微控制器之间的主要区别在于后者在板上有专用外围设备

CPU通过内存映射I/O访问STM32设备上的外围设备,请参见下图:

如您所见,尽管存在0x00000000到0xFFFFFF之间的线性地址空间,但地址空间是分段的,例如,程序内存从0x00000000开始,SRAM从0x20000000开始,外围设备从0x40000000开始。特定的外围寄存器可以由指针在与基址的特定偏移处读/写


对于该设备,USART映射到APB1区域,因此地址范围为0x40000000-0x4000A000。请注意,不同设备的实际外设地址可能不同。

查看下图,其中显示了STM32 Cortex-M4处理器的框图。 我突出显示了左上角的CPU核心;以及微控制器内部的其他组件

顾名思义,CPU核心就是核心;但微控制器还集成了闪存、RAM和许多外围设备;除了调试线路之外,几乎所有核心之外的东西都是通过总线矩阵访问的,这对于ROM、RAM和集成外围设备也是如此

请注意,微处理器和微控制器之间的主要区别在于后者在板上有专用外围设备

CPU通过内存映射I/O访问STM32设备上的外围设备,请参见下图:

如您所见,尽管存在0x00000000到0xFFFFFF之间的线性地址空间,但地址空间是分段的,例如,程序内存从0x00000000开始,SRAM从0x20000000开始,外围设备从0x40000000开始。特定的外围寄存器可以由指针在与基址的特定偏移处读/写


对于该设备,USART映射到APB1区域,因此地址范围为0x40000000-0x4000A000。请注意,不同设备的实际外设地址可能不同。

欢迎使用StackOverflow!请尽量避免一次问两个问题。看,欢迎来到StackOverflow!请尽量避免一次问两个问题。看到了。谢谢你的回答……但第一个问题的答案对我来说还不清楚……我不是在说CPU内核……我是在说CPU本身……我的问题是stm32的RAM在NVIC或MPU附近还是什么?如果你回答的话,那将对我有很大帮助……对不起,那没有意义。CPU核心就是CPU。你说的“近”是什么意思?你的意思是物理上的吗?我的意思是物理上的,但你能告诉我这张图片是一个真实的内存,或者它只是寻址模型吗?物理上,不知道。谁在乎呢?他们甚至可能在一个硅版本和下一个硅版本之间移动它。对任何事情都没有影响。你说的“真实记忆”是什么意思?内存地图显示了如果你使用它,每个地址将访问什么,这才是最重要的…我只是想知道这个内存我给你看的图片在哪里,我想我知道了;图片只是一个内存映射,它不是一个物理内存,物理内存是由ST实现的。谢谢你的时间…你的答案对我回答你的答案是一个很大的帮助…但是第一个问题的答案对我来说还不清楚…我不是在说CPU核心…我是在说CPU本身…我的问题是stm32的RAM是否靠近NVIC或MPU或其他什么?如果你回答的话,那将对我有很大帮助……对不起,那没有意义。CPU核心就是CPU。你说的“近”是什么意思?你的意思是物理上的吗?我的意思是物理上的,但你能告诉我这张图片是一个真实的内存,或者它只是寻址模型吗?物理上,不知道。谁在乎呢?他们甚至可能在一个硅版本和下一个硅版本之间移动它。对任何事情都没有影响。你说的“真实记忆”是什么意思?内存地图显示了如果你使用它,每个地址将访问什么,这才是最重要的…我只是想知道这个内存我给你看的图片在哪里,我想我知道了;这张图片只是一张记忆地图,它不是一个物理内存,物理内存是由ST实现的。谢谢你的时间……你的回答对我有很大帮助。谢谢你的回答