STM32的芯片架构

STM32芯片主要由内核片上外设组成

以下图为例(我们所使用的STM32就属于Cortex-M系列)

做stm32项目的架构 stm32程序架构_取指令


芯片制造商得到CM3处理器内核的使用授权后,它们就可以把CM3内核用

在自己的硅片设计中,添加存储器,外设, I/O以及其它功能块。不同厂家设计出的单片机

会有不同的配置,包括存储器容量、类型、外设等都各具特色。(以stm32F103为例,就是属于ARMv7架构,cortex-M系列下的M3核,为ST公司生产的芯片)

做stm32项目的架构 stm32程序架构_做stm32项目的架构_02


注:流水线技术就是将一条指令分解成一连串执行的子过程。例如:把指令的执行过程细分为取指令、指令编码、取操作数和执行 4 44 个子过程。这样多条指令可以重叠执行,因为取指令操作、指令编码操作、取操作、执行操作 是可以同时执行的。如下图所示:其中 1、2、3、4、5 表示要处理 5 条指令。

做stm32项目的架构 stm32程序架构_嵌入式_03


Stm32 存储器映射

STM32芯片上可访问的存储空间被分为八个主要块,每个块为512MB.(程序存储器、数据存储器、寄存器和输入输出端口都在这)每一个存储器本身并没有地址,给每个存储器分配地址的过程叫做存储器映射,这是由生产厂商分配的,而给存储器重新分配地址叫做存储器的重映射

每一个存储器里面由各种外设各种寄存器,给寄存器分配地址的过程叫做寄存器映射,重新分配地址叫做寄存器的重映射

做stm32项目的架构 stm32程序架构_做stm32项目的架构_04


做stm32项目的架构 stm32程序架构_嵌入式_05


其中我们主要使用学习到的就是Block0 Block1 Block2三个部分

做stm32项目的架构 stm32程序架构_做stm32项目的架构_06


片上外设根据不同的时钟,分为三条总线:

做stm32项目的架构 stm32程序架构_做stm32项目的架构_07


寄存器及寄存器映射

给特定功能的内存单元起个别名就叫寄存器,给已经分配好地址的有特定功能的内存单元起别名就叫寄存器映射

寄存器的学习与使用我们在51单片机中就有接触过。

那么如何在STM32中访问寄存器内容呢?

做stm32项目的架构 stm32程序架构_取指令_08


以GPIO这个外设为例子:

1.确认挂接在那个总线上,找到外设基地址;

2.通过翻阅手册确认端口地址

3.确认寄存器地址

3.通过阅读手册确认寄存器的基本功能