Cortex - M3处理器

Cortex - M3处理器

总线

Cortex - M3处理器基于哈佛结构体系,拥有独立的地址总线和数据总线,分别称为I-Code总线和D-Code总线。存储范围位0x00000000~0x1FFFFFFF。
Cortex - M3处理器有一条额外的系统总线用于存取位于0x20000000~0xDFFFFFFF和
0xE0100000~0xFFFFFFFF地址范围的Cortex-M3系统控制区。
Cortex - M3处理器的片上调试系统使用一条私有设备总线来连接

储存映射

Cortex - M3处理器拥有多重内部总线,但是存储区是一个线性4GB地址空间。

在这里插入图片描述

最开始1GB为Code(代码)区和SRAM(静态内存)区

Code区使用经过针对性优化的I-Code总线连接。SRAM区使用D-Code总线连接

接下来的0.5GB储存空间是片上外设区

微控制器的用户设备的基地址都落在这个区域。片上外设区和SRAM区的起始1MB区域可以使用位带技术实现位寻址。因此STM32所有的存储区都可以用于“字”或“位”位最小单位实现数据操作。

随后的2GB地址空间是拓展外部SRAM和外部设备
最后的0.5GB是Cortex - M3处理器内部设备区

位带的概念

在 Cortex-M3支持的位带中,有两个区中实现了位带。
 其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);
 第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最1MB)。  这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。
 Cortex-M3 使用如下术语来表示位带存储的相关地址  
  * 位带区: 支持位带操作的地址区  
  * 位带别名: 对别名地址的访问最终作用到位带区的访问上(注意:这中间有一个地址映射过程)
对于SRAM中的某个比特,该比特在位带别名区的地址:
AliasAddr = 0x22000000 + ((A‐0x20000000)*8+n)*4 = 0x22000000 + (A‐0x20000000)32 + n4 
对于片上外设位带区的某个比特,该比特在位带别名区的地址:
AliasAddr = 0x42000000 + ((A‐0x40000000)*8+n)*4 = 0x42000000 + (A‐0x40000000)32 + n4

在这里插入图片描述

系统节拍定时器

SysTick通过锁相环PLL0来提高频率提供CPU。
由于芯片总是从内部的RC振荡器开始工作,因此主振荡器只会应软件的请求而启动。
实现方法是设定SCS寄存器中的OSCEN位使能。
主振荡器提供一个状态标志SCS寄存器的OSCSTAT位,这样软件就可以确定何时主振荡器在运行稳定。
此时,软件可以控制切换到主振荡器,使其作为时钟源。
在启动以前,必须通过SCS的OSCRANGE位,选择一个频率范围。
在确定了主振荡器之后,需要进行锁相环的配置。

发布了42 篇原创文章 · 获赞 85 · 访问量 2292

猜你喜欢

转载自blog.csdn.net/weixin_44955712/article/details/103329820