第 1 章 绪论 ..................................................................................................................1
1.1 嵌入式系统 ..................................................................................................................1
1.1.1 嵌入式系统概述 ...............................................................................................2
1.1.2 嵌入式系统和通用计算机系统比较 ................................................................3
1.1.3 嵌入式系统的特点 ...........................................................................................4
1.2 嵌入式系统的组成 ......................................................................................................6
1.3 实时操作系统 ..............................................................................................................8
1.3.1 实时系统的概念 ...............................................................................................8
1.3.2 实时操作系统的基本特征 ...............................................................................9
1.3.3 实时操作系统性能的衡量指标 ......................................................................10
1.3.4 实时操作系统的分类 .....................................................................................10
1.3.5 POSIX 标准 ................................................................................................... 11
1.3.6 实时操作系统的典型应用 .............................................................................12
1.4 嵌入式系统的软件 ....................................................................................................12
1.4.1 无操作系统的嵌入式软件 .............................................................................12
1.4.2 带操作系统的嵌入式软件 .............................................................................12
1.4.3 嵌入式操作系统的分类 .................................................................................13
1.4.4 嵌入式实时操作系统的功能 ..........................................................................14
1.4.5 典型的嵌入式操作系统 .................................................................................15
1.4.6 软件架构选择建议 .........................................................................................22
1.5 嵌入式系统的分类 ....................................................................................................22
1.5.1 按应用对象分类 .............................................................................................23
1.5.2 按功能和性能分类 .........................................................................................23
1.5.3 按结构复杂度分类 .........................................................................................23
1.6 嵌入式系统的应用领域 .............................................................................................24
1.7 嵌入式系统的体系 ....................................................................................................25
1.7.1 硬件架构 ........................................................................................................26
1.7.2 软件层次 ........................................................................................................26
全书.indd 5 2024/3/7 15:46:49 VI Arm 嵌入式系统原理及应用——STM32F103 微控制器架构、编程与开发
1.8 嵌入式系统的设计方法 .............................................................................................29
1.8.1 嵌入式系统的总体结构 .................................................................................29
1.8.2 嵌入式系统设计流程 .....................................................................................30
1.8.3 嵌入式系统的软/硬件协同设计技术 .............................................................32
第 2 章 嵌入式微处理器 ...............................................................................................34
2.1 Arm 嵌入式微处理器简介 .........................................................................................34
2.1.1 Arm 处理器的特点 .........................................................................................34
2.1.2 Arm 体系结构的版本和系列..........................................................................35
2.1.3 Arm 的 RISC 结构特性 ..................................................................................38
2.1.4 Arm 处理器系列 ............................................................................................38
2.1.5 Arm Cortex-M 处理器 ....................................................................................41
2.2 嵌入式处理器的分类和特点 .....................................................................................42
2.3 Cortex-M3 嵌入式微处理器 ......................................................................................45
2.3.1 Arm 概述 ........................................................................................................45
2.3.2 CISC 和 RISC ................................................................................................48
2.3.3 Arm 架构的演变 ............................................................................................50
2.3.4 Arm 体系结构与特点 .....................................................................................52
2.3.5 Cortex-M 系列处理器 ....................................................................................54
2.3.6 Cortex-M3 处理器的主要特性 .......................................................................56
2.3.7 Cortex-M3 处理器结构 ..................................................................................57
2.3.8 存储器系统 ....................................................................................................59
第 3 章 STM32 系列微控制器 ......................................................................................62
3.1 STM32 微控制器概述 ...............................................................................................62
3.1.1 STM32 微控制器产品介绍 ............................................................................63
3.1.2 STM32 系统性能分析 ....................................................................................67
3.1.3 STM32 微控制器的命名规则 ........................................................................68
3.1.4 STM32 微控制器的选型 ................................................................................72
3.2 STM32F1 系列产品系统架构和 STM32F103ZET6 内部架构 ..................................73
3.2.1 STM32F1 系列产品系统架构 ........................................................................74
3.2.2 STM32F103ZET6 内部架构 ..........................................................................76
3.3 STM32F103ZET6 的存储器映像 ..............................................................................79
3.3.1 STM32F103ZET6 内置外设的地址范围 ........................................................81
3.3.2 嵌入式 SRAM ................................................................................................82
全书.indd 6 2024/3/7 15:46:49 目录 VII
3.3.3 嵌入式 Flash ..................................................................................................83
3.4 STM32F103ZET6 的时钟结构 ..................................................................................84
3.5 STM32F103VET6 的引脚 .........................................................................................87
3.6 STM32F103VET6 最小系统设计 ..............................................................................92
第 4 章 嵌入式开发环境的搭建 ....................................................................................95
4.1 Keil MDK5 安装配置 ................................................................................................95
4.1.1 Keil MDK 简介 ..............................................................................................95
4.1.2 Keil MDK 下载 ..............................................................................................98
4.1.3 Keil MDK 安装 ..............................................................................................99
4.1.4 安装库文件 ..................................................................................................101
4.2 Keil MDK 新工程的创建 ........................................................................................102
4.2.1 建立文件夹 ..................................................................................................102
4.2.2 打开 Keil μVision .........................................................................................102
4.2.3 新建工程 ......................................................................................................103
4.3 Cortex-M3 微控制器软件接口标准 CMSIS ............................................................104
4.3.1 CMSIS 介绍 .................................................................................................105
4.3.2 STM32F10x 标准外设库 ..............................................................................106
4.4 STM32F103 开发板的选择 ..................................................................................... 110
4.5 STM32 仿真器的选择 ............................................................................................. 110
第 5 章 STM32 中断 .................................................................................................. 113
5.1 中断概述 ................................................................................................................. 113
5.1.1 中断 ............................................................................................................. 114
5.1.2 中断的功能 .................................................................................................. 114
5.1.3 中断源与中断屏蔽 ....................................................................................... 115
5.1.4 中断处理过程 .............................................................................................. 116
5.1.5 中断优先级与中断嵌套 ............................................................................... 118
5.2 STM32F1 中断系统 ................................................................................................. 119
5.2.1 STM32F1 嵌套向量中断控制器 .................................................................. 119
5.2.2 STM32F1 中断优先级 .................................................................................120
5.2.3 STM32F1 中断向量表 .................................................................................121
5.2.4 STM32F1 中断服务函数 ..............................................................................124
5.3 STM32F1 外部中断 / 事件控制器 EXTI .................................................................125
5.3.1 STM32F1 的 EXTI 内部结构 .......................................................................125
全书.indd 7 2024/3/7 15:46:49 VIII Arm 嵌入式系统原理及应用——STM32F103 微控制器架构、编程与开发
5.3.2 STM32F1 的 EXTI 工作原理 .......................................................................128
5.3.3 STM32F1 的 EXTI 主要特性 .......................................................................129
5.4 STM32F1 的中断系统库函数 ..................................................................................129
5.4.1 STM32F1 的 NVIC 相关库函数 ..................................................................130
5.4.2 STM32F1 的 EXTI 相关库函数 ...................................................................133
5.4.3 STM32F1 的 EXTI 中断线 GPIO 引脚映射库函数 .....................................137
5.5 STM32F1 外部中断设计流程 ..................................................................................137
5.5.1 NVIC 设置 ...................................................................................................137
5.5.2 中断端口配置 ..............................................................................................138
5.5.3 中断处理 ......................................................................................................139
5.6 STM32F1 外部中断设计实例 ..................................................................................140
5.6.1 STM32F1 外部中断硬件设计 ......................................................................140
5.6.2 STM32F1 外部中断软件设计 ......................................................................140
第 6 章 STM32 GPIO ................................................................................................146
6.1 STM32 通用输入输出接口概述 ..............................................................................146
6.1.1 输入通道 ......................................................................................................148
6.1.2 输出通道 ......................................................................................................149
6.2 STM32 的 GPIO 功能 ..............................................................................................150
6.2.1 普通 I/O 功能 ...............................................................................................150
6.2.2 单独的位设置或位清除 ...............................................................................150
6.2.3 外部中断/唤醒线 .........................................................................................150
6.2.4 复用功能 ......................................................................................................151
6.2.5 软件重新映射 I/O 复用功能 ........................................................................151
6.2.6 GPIO 锁定机制 ............................................................................................151
6.2.7 输入配置 ......................................................................................................151
6.2.8 输出配置 ......................................................................................................152
6.2.9 复用功能配置 ..............................................................................................153
6.2.10 模拟输入配置 ............................................................................................153
6.2.11 STM32 的 GPIO 操作 ................................................................................154
6.2.12 外部中断映射和事件输出 ..........................................................................156
6.2.13 GPIO 的主要特性 ......................................................................................156
6.3 STM32 的 GPIO 常用库函数 ..................................................................................157
6.4 STM32 的 GPIO 使用流程 ......................................................................................165
6.4.1 普通 GPIO 配置 ...........................................................................................165
全书.indd 8 2024/3/7 15:46:50 目录 IX
6.4.2 I/O 复用功能 AFIO 配置 .............................................................................165
6.5 STM32 的 GPIO 输出应用实例 ...............................................................................165
6.5.1 STM32 的 GPIO 输出应用硬件设计 ............................................................165
6.5.2 STM32 的 GPIO 输出应用软件设计 ............................................................166
6.6 STM32 的 GPIO 输入应用实例 ...............................................................................172
6.6.1 STM32 的 GPIO 输入应用硬件设计 ............................................................172
6.6.2 STM32 的 GPIO 输入应用软件设计 ............................................................172
第 7 章 STM32 定时器 ..............................................................................................176
7.1 STM32 定时器概述 .................................................................................................176
7.2 STM32 基本定时器 .................................................................................................179
7.2.1 基本定时器介绍 ...........................................................................................179
7.2.2 基本定时器的功能 .......................................................................................180
7.2.3 STM32 基本定时器的寄存器 ......................................................................182
7.3 STM32 通用定时器 .................................................................................................183
7.3.1 通用定时器介绍 ...........................................................................................183
7.3.2 通用定时器的功能描述 ...............................................................................183
7.3.3 通用定时器的工作模式 ...............................................................................188
7.3.4 通用定时器的寄存器 ...................................................................................192
7.4 STM32 定时器库函数 .............................................................................................192
7.5 STM32 定时器应用实例 .........................................................................................205
7.5.1 STM32 的通用定时器配置流程 ...................................................................205
7.5.2 定时器应用的硬件设计 ...............................................................................207
7.5.3 定时器应用的软件设计 ...............................................................................207
7.6 SysTick 系统滴答定时器 ......................................................................................... 211
7.6.1 SysTick 功能综述 ........................................................................................ 211
7.6.2 SysTick 配置例程 ........................................................................................213
第 8 章 STM32 通用同步/异步收发器 ........................................................................215
8.1 串行通信基础 ..........................................................................................................215
8.1.1 串行异步通信数据格式 ...............................................................................215
8.1.2 串行同步通信数据格式 ...............................................................................216
8.2 STM32 的 USART 工作原理 ...................................................................................216
8.2.1 USART 介绍 ................................................................................................217
8.2.2 USART 的主要特性 .....................................................................................217
全书.indd 9 2024/3/7 15:46:50 X Arm 嵌入式系统原理及应用——STM32F103 微控制器架构、编程与开发
8.2.3 USART 的功能 ............................................................................................218
8.2.4 USART 的通信时序 .....................................................................................221
8.2.5 USART 的中断 ............................................................................................222
8.2.6 USART 的相关寄存器 .................................................................................222
8.3 STM32 的 USART 库函数 .......................................................................................223
8.4 STM32 的 USART 串行通信应用实例 ....................................................................231
8.4.1 STM32 的 USART 基本配置流程 ................................................................231
8.4.2 USART 串行通信应用的硬件设计 ..............................................................232
8.4.3 USART 串行通信应用的软件设计 ..............................................................233
第 9 章 STM32 SPI 串行总线 ....................................................................................241
9.1 STM32 的 SPI 通信原理 ..........................................................................................241
9.1.1 SPI 串行总线概述 ........................................................................................242
9.1.2 SPI 串行总线互连方式 ................................................................................244
9.2 STM32F1 SPI 串行总线的工作原理 .......................................................................245
9.2.1 SPI 串行总线的特征 ....................................................................................245
9.2.2 SPI 串行总线的内部结构.............................................................................246
9.2.3 SPI 串行总线时钟信号的相位和极性 ..........................................................248
9.2.4 STM32 的 SPI 配置 ......................................................................................249
9.2.5 STM32 的 SPI 数据发送与接收过程 ...........................................................251
9.3 STM32 的 SPI 库函数 .............................................................................................253
9.4 STM32 SPI 与 Flash 存储器接口的应用实例 ..........................................................256
9.4.1 STM32 的 SPI 配置流程 ..............................................................................256
9.4.2 SPI 与 Flash 存储器接口的硬件设计 ...........................................................257
9.4.3 SPI 与 Flash 存储器接口的软件设计 ...........................................................257
第 10 章 STM32 I2C 串行总线 ...................................................................................265
10.1 STM32 I2C 串行总线的通信原理 .........................................................................265
10.1.1 STM32 I2C 串行总线概述 .......................................................................265
10.1.2 STM32 I2C 串行总线的数据传输 ............................................................268
10.2 STM32 I2C 串行总线接口 .....................................................................................270
10.2.1 STM32 I2C 串行总线的主要特性 ............................................................270
10.2.2 STM32 I2C 串行总线的内部结构 ............................................................271
10.2.3 STM32 I2C 串行总线的功能描述 ............................................................272
10.3 STM32F103 的 I2C 库函数 ...................................................................................273
全书.indd 10 2024/3/7 15:46:50 目录 XI
10.4 STM32 I2C 与 EEPROM 接口的应用实例 ............................................................279
10.4.1 STM32 的 I2C 配置流程 ..........................................................................279
10.4.2 STM32 I2C 与 EEPROM 接口的硬件设计 ..............................................280
10.4.3 STM32 I2C 与 EEPROM 接口的软件设计 ..............................................280
第 11 章 STM32 A/D 转换器 ......................................................................................287
11.1 模拟量输入通道 ....................................................................................................287
11.1.1 模拟量输入通道的组成 ............................................................................287
11.1.2 A/D 转换器简介 .......................................................................................287
11.2 模拟量输入信号类型与量程自动转换 ..................................................................288
11.2.1 模拟量输入信号类型 ...............................................................................288
11.2.2 量程自动转换 ...........................................................................................288
11.3 STM32F103ZET6 集成的 ADC 模块.....................................................................289
11.3.1 STM32 的 ADC 主要特征 ........................................................................289
11.3.2 STM32 的 ADC 模块结构 ........................................................................290
11.3.3 STM32 的 ADC 功能................................................................................294
11.3.4 STM32 的 ADC 应用特征 ........................................................................298
11.4 STM32 的 ADC 库函数 .........................................................................................302
11.5 STM32 的模数转换器应用实例 ............................................................................ 311
11.5.1 STM32 的 ADC 配置流程 ........................................................................ 311
11.5.2 ADC 应用的硬件设计 ..............................................................................312
11.5.3 ADC 应用的软件设计 ..............................................................................312
第 12 章 STM32 DMA 控制器 ....................................................................................319
12.1 STM32 DMA 的基本概念 .....................................................................................319
12.1.1 DMA 的定义 ............................................................................................319
12.1.2 DMA 在嵌入式实时系统中的价值 ..........................................................320
12.1.3 DMA 传输的基本要素 .............................................................................321
12.1.4 DMA 传输过程 ........................................................................................321
12.1.5 DMA 的优点与应用 .................................................................................321
12.2 STM32 DMA 的结构和主要特征 ..........................................................................322
12.3 STM32 DMA 的功能描述 .....................................................................................324
12.3.1 DMA 处理 ................................................................................................324
12.3.2 仲裁器 ......................................................................................................324
12.3.3 DMA 通道 ................................................................................................324
全书.indd 11 2024/3/7 15:46:50 XII Arm 嵌入式系统原理及应用——STM32F103 微控制器架构、编程与开发
12.3.4 DMA 中断 ................................................................................................326
12.4 STM32 的 DMA 库函数 ........................................................................................326
12.5 STM32 的 DMA 应用实例 ....................................................................................333
12.5.1 STM32 的 DMA 配置流程 .......................................................................333
12.5.2 DMA 应用的硬件设计 .............................................................................334
12.5.3 DMA 应用的软件设计 .............................................................................334
参考文献 .....................................................................................................................340
全书.indd 12 2024/3/7 15:46:50