🎓 总站 🏠 本课目录 01 概述 02 ARM与STM32 03 开发环境 04 最小系统与C 05 GPIO 06 中断 07 串口通信 08 DMA 09 定时器 10 ADC 11 从模块到项目 12 嵌入式OS
智能嵌入式系统设计 · 第2章

ARM Cortex-M3 内核与 STM32

从冯·诺依曼与哈佛结构、CISC 与 RISC、流水线技术讲起,理解 ARM 体系结构、Cortex-M3 内核(寄存器组、存储映射、NVIC),再到 STM32F10x 的系统总线、存储结构与时钟系统(5 个时钟源、RCC)。

📚 学习进度
0%

🎯学习目标

  • 理解冯·诺依曼结构哈佛结构的区别;
  • 了解 CISC 与 RISC 的区别和联系;
  • 了解 ARM 体系结构(ARMv4~ARMv8 各版本与内核对应);
  • 掌握 Cortex-M3 内核结构、寄存器组、存储映射、NVIC
  • 掌握 STM32 微控制器的系统总线、存储结构、时钟系统。

体系结构基础 ⭐

冯·诺依曼结构

指令和数据放在同一个存储器,统一编址、宽度相同。

缺点:不能同时取指令又取数据(瓶颈)。

计算机五大部件:运算器、控制器、存储器、输入、输出。

哈佛结构

指令和数据独立编址、独立访问,分存于两个存储器,用两条独立总线与 CPU 交换。

优点:数据和指令可同时存取,容易实现指令流水

ARM 存储模式(大小端)

存储器以字节为单位,每地址 8 位。32 位数据 0x12345678 存于 0x8000~0x8003:

模式0x80000x80010x80020x8003
小端0x780x560x340x12
大端0x120x340x560x78
记忆:小端=低字节存低地址;大端=高字节存低地址。ARM Cortex-M3 默认小端。

CISC vs RISC

指标CISC 复杂指令集RISC 精简指令集
指令集长度不固定,大量混杂指令长度固定,单周期简单指令
流水线注重硬件功能,周期数多用流水线降低周期数
功耗体积电路丰富,体积大功耗大结构简单,体积小功耗小
成本硬件复杂,成本高硬件简单,成本低
应用通用桌面机、高性能计算机嵌入式领域、移动设备

流水线技术

把每条指令分解为多步,各步重叠并行处理。Cortex-M3 采用三级流水线取指(FI) → 译码(DI) → 执行(EI)

吞吐率公式:吞吐率 = 指令条数 / 流水线所需时间;
所需时间 = 第一条完成时间 + (n−1) × 最长指令段时间。
:取指1ns+分析3ns+执行2ns,100条指令:时间 = (1+3+2) + 99×3 = 6+297 = 303ns,吞吐率 = 100/303ns。

ARM 与体系结构

ARM 三层含义:① 一家公司(全球半导体领先,设计 16/32 位嵌入式处理器)② 一类芯片产品统称(采用 ARM 技术的 RISC 处理器)③ 一种技术(Advanced RISC Machines 32 位 RISC 体系结构)。

商业模式:ARM 专门从事基于 RISC 的芯片设计开发,不直接生产芯片,而是转让技术设计许可(IP 授权),由合作公司(ST/NXP/TI 等)生产各具特色的芯片。

ARM 体系结构版本

体系结构位数典型内核
ARMv4T32ARM7TDMI、ARM9TDMI
ARMv532ARM7EJ、ARM9E
ARMv632ARM11
ARMv6-M32Cortex-M0、Cortex-M0+
ARMv7-M32Cortex-M3
ARMv7E-M32Cortex-M4(带 FPU/DSP)
ARMv7-A32Cortex-A5/A9/A15
ARMv8-A64/32Cortex-A53/A57

Cortex-M 系列对比

内核架构流水线FPU定位
Cortex-M0+ARMv6-M2级NO8/16位应用,超低功耗
Cortex-M0ARMv6-M3级NO低功耗低成本
Cortex-M3ARMv7-M+哈佛3级NO32位实时应用,高确定性
Cortex-M4ARMv7-M3级YES32位 DSC,信号处理
Cortex-M7ARMv7-M6级+分支预测YES最高性能

Cortex-M3 内核 ⭐

Cortex-M3 基于 ARMv7-M 体系结构的 32 位处理器内核(数据/寄存器/存储器位宽均 32 位),采用基于哈佛结构的三级流水线,有独立的数据总线和指令总线,二者共享 4GB 寻址空间。

内核架构组件

Cortex-M3 Core

指令提取单元、译码单元、寄存器组、ALU。

NVIC

嵌套向量中断控制器,实现快速、低延迟的异常中断处理。

SysTick

24 位倒计时计数器,系统定时器,产生定时中断。

MPU

存储器保护单元,对存储区域访问保护,防止破坏关键数据。

总线矩阵

AHB 互连网络,连接内核与调试接口到外部总线,提供并行传输。

寄存器组

  • 13 个通用寄存器 R0~R12(32 位);
  • R13(SP 堆栈指针)、R14(LR 链接寄存器)、R15(PC 程序计数器)有专门用途;
  • 特殊功能寄存器:程序状态寄存器(xPSR)、中断屏蔽寄存器(PRIMASK/FAULTMASK/BASEPRI)、控制寄存器(CONTROL)。

存储映射

采用存储器与 I/O 统一编址,将 FLASH/RAM/外设统一编址,总寻址空间 4GB(0x00000000~0xFFFFFFFF)。通过存储器地址访问外设的方式称存储器地址映射

NVIC 中断与异常 ⭐

异常(exception):打断程序正常执行顺序的事件。中断:来自外部片上/外扩外设的中断请求。Cortex-M3 支持 256 种异常和中断。

编号类别优先级说明
1复位 Reset−3(最高)固定优先级
2NMI−2不可屏蔽中断
3HardFault−1硬错误
4~6MemManage/BusFault/UsageFault0/1/2可编程
11SVCall3系统服务调用
15SysTick可编程系统滴答定时器
16~255外部中断 IRQ#0~239可编程240 个外部中断
NVIC 特性:① 可嵌套中断(高优先级打断低优先级)② 向量中断(缩短延迟)③ 动态优先级调整 ④ 中断延迟大大缩短 ⑤ 中断可屏蔽。优先级数值越小,优先级越高。

STM32 系统结构

STM32F10x 是 ST 公司基于 ARM Cortex-M3 内核设计的 32 位精简指令集微控制器,最高工作频率 72MHz

总线相关参数

  • 总线宽度:同时传送的数据位数(如 32 位);
  • 总线频率:工作速度,越高越快;
  • 总线带宽 = 总线宽度 × 总线频率 / 8(单位 MBps)。

STM32 总线结构

AHB

Advanced High-speed Bus,先进高速总线。

APB

Advanced Peripheral Bus,先进外设总线(分 APB1/APB2)。

RCC

Reset and Clock Control,复位与时钟控制器。

FSMC

Flexible Static Memory Controller,静态存储控制器,连外部存储。

关键总线

  • ICode 总线:连内核指令总线与 FLASH,指令预取;
  • DCode 总线:连内核与 FLASH 数据接口,常量加载/调试;
  • System 总线:连内核系统总线到总线矩阵;
  • 总线矩阵:主控总线访问仲裁管理;
  • DMA 总线:内存与外设间数据传输。
外设挂载APB2(最高 72MHz)挂 GPIOA~G、USART1、SPI1、ADC1~3、TIM1、EXTI;APB1(最高 36MHz)挂 USART2/3、SPI2、USB、CAN、DAC。

STM32 存储与中断 ⭐

存储类型

RAM

随机存储器,存运行数据和堆栈,掉电丢失。堆栈保护断点和现场,用于中断机制。

Flash

闪存(ROM 本质),存用户程序代码,掉电不丢失,可重复擦写,容量较大。

EEPROM

电可擦可编程只读存储器,存需经常修改的非易失数据

STM32 中断优先级分组

STM32 中断优先级分两级:抢占优先级(决定能否被打断)和响应优先级(抢占相同时排序)。STM32F103 有 60 个中断。通过 NVIC 分组分配二者位数:

分组抢占位数响应位数
Group_00 位4 位(0~15)
Group_11 位(0~1)3 位(0~7)
Group_22 位(0~3)2 位(0~3)
Group_33 位(0~7)1 位(0~1)
Group_44 位(0~15)0 位
抢占 vs 响应:抢占优先级高的可打断低的;抢占相同时,响应优先级高的先处理但不能抢占(需等当前中断完成)。

STM32 时钟系统

STM32 外设时钟复杂,需要完整时钟系统管理。时钟由 RCC(复位与时钟控制器)产生,为系统和各外设提供所需频率,确定工作速度。

STM32 有 5 个时钟源:系统时钟经 AHB 预分频器分频,产生各种外设所需频率。AHB 分频器输出供五大模块使用。

重点例题

例1 冯·诺依曼结构和哈佛结构的本质区别?
答案
冯·诺依曼:指令和数据共用一个存储器(统一编址),不能同时取指令和数据;哈佛:指令和数据独立编址、独立访问,用两条总线,可同时存取,易实现流水。
例2 三级流水线,取指1ns、分析3ns、执行2ns,100条指令的吞吐率?
答案
时间 = 第一条(1+3+2=6ns) + (100−1)×最长段(3ns) = 6+297 = 303ns;吞吐率 = 100/303ns。
例3 0x12345678 在小端模式下 0x8000 地址存什么?
答案
小端=低字节存低地址。0x8000 存最低字节 0x78,0x8003 存 0x12。
例4 抢占优先级和响应优先级的区别?
答案
抢占优先级决定能否被打断(高可打断低);响应优先级只在抢占相同时决定处理顺序,但不能抢占,需等当前中断结束。
例5 APB1 和 APB2 的最高频率分别是?
答案
APB2 最高 72MHz(挂 GPIO/USART1/ADC/TIM1);APB1 最高 36MHz(挂 USART2/3/SPI2/USB/CAN/DAC)。

🎯自测(点击展开)

冯·诺依曼结构的主要缺点?
指令和数据共用一个存储器,不能同时取指令又取数据,形成瓶颈。
哈佛结构为什么容易实现流水?
指令和数据独立存储、独立总线,可同时存取,为流水线并行提供了硬件基础。
CISC 和 RISC 的指令长度有何不同?
CISC 指令长度不固定、指令多;RISC 指令长度固定、单周期简单指令。
ARM 公司的商业模式是什么?
不直接生产芯片,而是做 IP 授权(设计许可),由 ST/NXP/TI 等合作公司生产。
Cortex-M3 采用什么结构和几级流水线?
基于 ARMv7-M 的 32 位内核,采用哈佛结构的三级流水线(取指-译码-执行)。
NVIC 的"优先级数值越小"意味着什么?
优先级数值越小,优先级越高。
STM32 有几个时钟源?由什么产生?
5 个时钟源,由 RCC(复位与时钟控制器)产生。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0