ARM:Advanced RISC Machine,既可以认为是一个公司的名字,也可以认为是一类为处理器的统称,还可以认为是一种技术。1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。ARM 公司是专门从事基于 RISC 技术芯片设计,作为知识产权供应商,本身不从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片。
一、ARM 处理器
1.1 ARM 体系结构的特点
- ARM 采用 RISC 体系结构;
- 支持 ARM指令集(32 位)/Thumb 指令集(16 位);
Thumb 指令集为 ARM 指令集的子集,相比等价的 ARM 指令集代码,节省30%~40%的存储空间 - 有大量寄存器;
31 个通用寄存器;6 个状态寄存器,用于标志 CPU 工作状态及程序运行状态的 32 位寄存器。 - 具有低功耗、低成本和高性能。
RISC 体系结构
- 具有固定长度指令格式
- 指令归整、简单
- 基本寻址方式有2~3种
- 使用单周期指令,便于流水线操作执行
- 数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令执行效率。
1.2 ARM 系列微处理器
ARM 微处理器包括:ARM7 系列、ARM9 系列、ARM9E 系列、ARM10E 系列、ARM11 系列、SecurCore 系列、Inter 的 XScale、ARM Cortex 系列等
ARM Cortex 系列
包含 ARM Cortex - A、ARM Cortex - R 和 ARM Cortex - M 三款处理器集成了 Thumb - 2指令集。
二、ARM Cortex-M3 系列处理器

2.1 ARM Cortex-M3 原理
- Cortex-M3 处理器,为 RISC 芯片,其简单的结构使 ARM 内核非常小,这使得器件的功耗也非常低。
- Cortex-M3 处理器是一个 32 位的处理器,基于 ARMV7 架构(哈弗结构),带有一个分级结构。
- Cortex-M3 处理器集成了 CM3Core 中心处理器内核和先进的系统外设,实现了内置的中断控制、存储器保护以及系统的调试和跟踪功能。
2.1.1 寄存器组
- 通用寄存器(R0~R12):R0 ~ R12 都是 32 位通用寄存器,用于数据操作。绝大多数 16 位 Thumb 指令只能访问 R0~R7,32 位 Thumb-2 指令可以访问所有寄存器。
- 两个堆栈指针(R13):Cortex-M3 拥有两个堆栈指针,都是 banked,因此任一时刻只能使用其中一个;
- 连接寄存器(R14):当调用一个子程序时,由 R14 存储返回地址。不像其他大多数处理器,ARM 为了减少访问内存的次数,把返回地址直接存储在寄存器中。
- 程序计数寄存器(R15):指向当前的程序地址,如果修改它的值,就能改变程序的执行流程。
- 特殊功能寄存器:如程序状态字存储器组、中断屏蔽寄存器组、控制寄存器等。
2.1.2 NVIC 嵌套向量中断控制器
可嵌套中断支持;向量中断支持;动态优先级调整;中断延时大大缩短;中断可屏蔽。
2.1.3 外部中断信号组
Cortex-M3 的所有中断机制都由 NVIC 实现。除了支持 240 条中断之外,NVIC 还支持11 个内部异常源,可以实现 fault 管理机制。Cortex-M3 有了 256 个预定义的异常类型。
2.1.4 存储器接口
Cortex-M3 支持 4GB 存储空间。与其他 ARM 架构不同,它们的存储映射由半导体厂商决定。
2.1.5 总线互联网路
总线互连网路是指 Cortex-M3 内部的若干总线接口,以使 Cortex-M3 能同时取址和访问内存。
- 用于访问指令存储器的总线:有两条代码存储区总线负责对代码存储区的访问,分别是 ICode 总线和 DCode 总线。
- 用于访问存储器和外设的系统总线,覆盖的区域包含 SRAM 、片上外设、片外 RAM 、片外扩展设备以及系统级存储区的部分空间。
- 用于访问私有外设的总线,负责一部分私有外设的访问,主要是访问调试组件。
2.1.6 调试接口
Cortex-M3 在内核水平上搭载了若干种调试相关的特性,最主要的就是程序执行控制,包括停机、单步执行、指令断点、数据观察点、寄存器和存储器访问、性能速写以及各种跟踪机制。目前可用的 DPs 包括 SWJ-DP,即支持传统的 JTAG 调试,也支持性的串行线调试协议 SWD。
2.2 ARM Cortex-M3 应用与编程
- Cortex-M3 处理器是一个 32 位的处理器。内部的数据路径是 32 位的,寄存器是 32 位的,寄存器接口也是 32 位的
- Cortex-M3 的指令和数据各使用一条总线,对多个操作可以并行执行,加快了应用程序的执行速度
- Cortex-M3 处理器使用 Thumb-2 指令集,允许 32 位指令和 16 位指令同时使用,代码密度与处理性能大幅提高。

与传统的 ARM 处理器相比,Cortex-M3 在许多方面都更先进。其优势,主要表现在以下几个方面:
- 指令宽度:
- 指令效率:
- 能效优势:
- 使软件开发更加容易:
三、STM32 系列芯片
3.1 STM32 系列芯片概述
3.1.1 STM32 系列 MCU 芯片特点如下:
- 运用了ARM 公司最新的、最先进的 Cortex-M3 内核;
- 突出的能耗控制。STM32 经过特别设计,将动态耗电机制、电池供电方式下低电压工作性能和等待运行状态下的低功耗进行最优化处理控制;
- 创新出众的外设;
- 提供各种开发资源和固件库便于用户开发,促使新研发的产品很快上市
3.1.2 STM32 系列芯片分不同型号,以 STM32F103C8T6 这个型号的芯片为例

3.1.3 STM32 的系统架构
STM32 的系统架构主系统主要由四个驱动单元和四个被动单元构成。四个驱动单元是:内核 DCode 总线; 系统总线; 通用 DMA1; 通用 DMA2。四被动单元是: AHB 到 APB 的桥(连接所有的 APB 设备);内部 FlASH 闪存;内部 SRAM; FSMC。

3.2 STM32 的时钟系统
在 STM32 中,有4个最重要的时钟源,分别为 HSI、HSE、LSI、LSE。
- 低速内部时钟 LSI
- 低速外部时钟 LSE
- 高速内部时钟 HIS
- 高速外部时钟 HSE
以外部高速时钟为例分析,并假设外部晶振为 8MHZ。
