STM32学习笔记01

STM32简介

系列文章

STM32简介

ARM What

ARM是一种处理器框架,本身是32位设计,并且能兼容16位指令,由英国ARM公司设计。

ARM只是一个内核框架,而不是具体的芯片。它主要分为以下几个版本:

STM32 What

STM32 是一种嵌入式芯片,内核使用的就是 Cortex-M 系列。

比较常用的有:

STM32 Why

STM32 生产时间较早,因此目前的网络相关资源很多,使用也更广泛。

STM32 是一种典型的基于 Cortex-M 系列

STM32 结构概览

要掌握 STM32 的开发,就必须对 STM32 的结构有所了解。这样,才能明白开发过程中的一些操作有什么效果,以及为什么需要这些操作。

STM32的芯片系统结构图如下:

其中Cortex-M3内核由ARM公司设计,其余部分称为外设,由ST公司设计。

以上系统结构左侧有三个结构:Cortex-M3和DMA1、DMA2,它们是驱动单元,即内核。

主要的外设有4个:FLASH、SRAM、FSMC和AHB系统总线。

FLASH存储器负责存储代码,Cortex-M3内核通过ICode总线从FLASH接口处读取这些代码。I表示指令(instruction)。STM32程序编译完成后都是一条条指令,存放在FLASH之中,内核要读取这些指令就需要通过ICode总线。这条总线几乎每时每刻都在被使用。

D线即DCode总线,D表示数据(data),因此该总线是用来读取数据的。数据有常量和变量两种,变量是存放在SRAM中的,而常量是存放在FLASH中的。DCode总线就负责将SRAM和FLASH中的数据通过总线矩阵整合,然后读到Cortex-M内核中供使用。

STM32中的结构DMA1和DMA2,它通过DMA总线与总线矩阵进行交互。DMAx负责处理一些无需CPU参与的数据操作,例如转移或复制数据,因此它们需要DMA总线来读取这部分数据。由于这两种数据的读取可能会造成冲突,因此在读取数据之前,需要通过总线矩阵判断由DCode总线还是DMA总线来执行读取工作。

系统总线(System)主要负责读取外设中的寄存器。

AHB系统总线上挂在了两个外设:SDIO以及复位和时钟控制(RCC),该系统总线由两个桥接分为了两个总线:APB1和APB2。APB2是高速总线,APB1是低速总线,它们各自挂载了一些外设功能。

FSMC和SDIO都是扩展,可以用它们访问一些外部的设备和存储器。