第1章 微型计算机系统的基础知识 1
1.1 计算机的运算基础 1
1.1.1 计算机中数值信息的表示与运算 2
1.1.2 计算机中字符信息的表示与运算 8
1.1.3 计算机中逻辑信息的表示与运算 11
1.2 微型计算机系统概述 12
1.2.1 微型计算机系统的组成 13
1.2.2 微机系统基本结构 13
1.2.3 计算机系统的层次结构 14
1.2.4 微型计算机的分支 18
1.3 微型计算机的硬件系统 21
1.3.1 微机系统的硬件组成 21
1.3.2 微机的主要组件 21
1.4 微型计算机的软件系统 23
1.4.1 计算机语言和语言处理程序 24
1.4.2 软件的分类 25
1.4.3 操作系统的概念 26
1.5 计算机的发展 28
1.5.1 微型计算机的特点与分类 31
1.5.2 嵌入式计算机系统的发展 32
第2章 计算机的基本结构和工作原理 36
2.1 计算机的体系结构 36
2.1.1 冯·诺伊曼结构 36
2.1.2 基于总线的冯·诺伊曼模型机 39
2.1.3 模型机的指令集与工作过程 44
2.1.4 哈佛结构 47
2.1.5 冯·诺伊曼结构的改进 48
2.2 精简指令集计算机与复杂指令集计算机 52
2.2.1 指令集结构设计及优化 52
2.2.2 RISC和CISC 53
2.3 计算机的并行技术 54
2.3.1 计算机并行技术 54
2.3.2 多机系统与多核系统、多线程技术 55
2.4 指令流水线技术 58
2.4.1 流水线技术的特点 61
2.4.2 流水线的操作过程 62
2.4.3 流水线技术的局限性 64
2.4.4 指令流水线设计 65
2.5 计算机系统的性能测评 70
2.5.1 计算机的字长 70
2.5.2 访存空间与存储容量 70
2.5.3 运算速度 71
第3章 ARM微处理器 74
3.1 微处理器的指标 74
3.2 ARM技术概论 77
3.2.1 ARM技术的发展及应用 77
3.2.2 ARM处理器架构 78
3.2.3 ARM处理器的指令集 80
3.3 STM32系列微处理器 82
3.3.1 STM32系列微处理器的系统结构 82
3.3.2 STM32系列微处理器命名 85
3.3.3 STM32微处理器实例 87
3.4 STM32微处理器的内部资源简介 90
3.4.1 STM32的电源、时钟及复位 91
3.4.2 STM32的存储器映射 93
3.5 STM32微处理器的内核型号Cortex-M3 97
3.5.1 Cortex-M3内核 97
3.5.2 Cortex-M3的存储器组织 99
3.5.3 Cortex-M3存储系统的位段操作 100
第4章 STM32微处理器 104
4.1 STM32处理器内核结构 104
4.1.1 Cortex-M3内核的功能模块 104
4.1.2 Cortex-M3处理器内核的特点 105
4.2 STM32处理器编程模型 108
4.2.1 工作模式 108
4.2.2 工作状态 108
4.2.3 特权等级 109
4.3 寄存器 110
4.3.1 Cortex-M3中的寄存器 110
4.3.2 寄存器分类与功能 111
4.4 异常与中断 114
4.4.1 系统异常类型和外部中断类型 114
4.4.2 异常向量表 116
4.4.3 优先级定义 116
4.5 存储器与堆栈 117
4.5.1 数据类型 117
4.5.2 存储格式 117
4.5.3 按字对齐与按半字对齐 117
4.5.4 堆栈 118
4.6 复位 120
4.6.1 复位的分类 120
4.6.2 Cortex-M3处理器复位流程 120
4.7 STM32的最小系统 121
第5章 Cortex-M3指令系统 124
5.1 Cortex-M3指令结构 124
5.1.1 Cortex-M3指令的格式 124
5.1.2 指令的条件码 125
5.1.3 指令的第二源操作数 125
5.1.4 指令宽度选择 127
5.2 ARM基本寻址方式 127
5.3 Cortex-M3指令集 131
5.3.1 数据处理指令 131
5.3.2 跳转指令 140
5.3.3 特殊寄存器访问指令 141
5.3.4 存储器访问指令 142
第6章 汇编程序设计 151
6.1 汇编语言与汇编器 151
6.2 汇编语言程序规范 152
6.2.1 汇编语言程序结构 152
6.2.2 语句的构成与规范 152
6.2.3 汇编语言程序中常用的符号 153
6.2.4 表达式和运算符 154
6.3 伪指令及应用 156
6.3.1 符号定义伪指令 157
6.3.2 数据定义伪指令 158
6.3.3 汇编控制伪指令 161
6.3.4 其他常用的伪指令 162
6.4 宏指令及应用 165
6.5 汇编语言程序设计 166
6.5.1 汇编语言的程序结构 166
6.5.2 顺序结构程序设计 167
6.5.3 分支结构程序设计 169
6.5.4 循环结构程序设计 174
6.5.5 子程序调用 177
6.6 STM32编程 178
6.6.1 工程开发常用的集成开发环境 179
6.6.2 软件接口标准CMSIS 181
6.6.3 汇编语言程序与CC+++语言程序之间的调用 182
第7章 存储器及其接口技术 189
7.1 存储器分类 189
7.1.1 按存储介质分类 189
7.1.2 按数据存取顺序分类 190
7.1.3 按存储原理分类 191
7.2 存储器主要性能指标 196
7.3 计算机的层次化存储技术 197
7.3.1 存储系统的分层结构 197
7.3.2 高速缓存 198
7.3.3 虚拟存储器 203
7.3.4 存储器时序 205
7.4 存储芯片的扩展技术 206
7.4.1 位扩展 207
7.4.2 字扩展 207
7.4.3 字位扩展 208
7.5 存储器接口技术 208
7.5.1 存储器接口中的片选控制 209
7.5.2 存储器接口分析与设计举例 212
7.5.3 多字节存储器接口 214
7.5.4 STM32存储器扩展技术 215
7.6 存储器发展趋势 217
7.7 存储器系统设计的基本原则 218
第8章 输入/输出接口 222
8.1 接口的基本概念 222
8.1.1 接口的结构与功能 222
8.1.2 端口的编址方式 223
8.1.3 接口的地址译码方式 224
8.2 接口信息传输方式 224
8.2.1 程序控制方式 225
8.2.2 中断传输方式 226
8.2.3 直接存储器访问方式 227
8.2.4 通道方式 229
8.3 LED显示接口 230
8.4 键盘接口 232
8.4.1 非编码式键盘接口 233
8.4.2 编码式键盘接口 234
8.5 通用并行接口 235
8.5.1 SCSI接口 235
8.5.2 IEEE 488接口 236
8.6 通用串行接口 237
8.6.1 串行通信工作方式 238
8.6.2 串行通信的数据校验 240
8.6.3 串行外围设备接口SPI 241
8.6.4 通用同步异步收发传输器USART 243
8.7 嵌入式通用输入/输出接口GPIO 250
8.7.1 GPIO的功能描述 250
8.7.2 GPIO的工作模式 251
8.7.3 复用功能(AFIO)配置 253
8.8 应用实例 255
8.8.1 USART应用实例 255
8.8.2 GPIO应用实例 257
第9章 总线 260
9.1 总线的概念 260
9.1.1 总线分类 260
9.1.2 总线性能指标 262
9.2 总线仲裁 263
9.2.1 集中式仲裁 263
9.2.2 分布式仲裁 265
9.3 总线时序和数据传输方式 265
9.3.1 总线时序 265
9.3.2 同步传输 266
9.3.3 异步传输 266
9.3.4 半同步传输 267
9.4 串行总线 267
9.4.1 I2C总线 267
9.4.2 USB总线 273
9.4.3 IEEE1394总线 276
9.4.4 SATA总线 278
9.4.5 PCI Express总线 278
9.5 并行总线 278
9.5.1 ISA总线 278
9.5.2 PCI总线 278
9.5.3 AGP总线 280
9.6 嵌入式系统总线 281
9.6.1 AHB总线 281
9.6.2 ASB总线 283
9.6.3 APB总线 283
第10章 中断系统 285
10.1 中断系统基本概念 285
10.2 中断分类 286
10.3 中断优先级和中断嵌套 287
10.3.1 中断优先级 287
10.3.2 中断嵌套 289
10.4 中断处理过程 290
10.5 嵌入式中断系统 291
10.5.1 ARM STM32控制器的中断概念 291
10.5.2 系统故障 294
10.5.3 嵌套向量中断控制器NVIC 297
10.5.4 外部中断事件控制器EXTI 301
10.5.5 中断响应过程 302
10.6 外部中断应用实例 303
第11章 ARM嵌入式计算机系统设计 308
11.1 嵌入式计算机系统及其设计方法 308
11.1.1 嵌入式系统 308
11.1.2 嵌入式系统项目开发方法 313
11.1.3 嵌入式系统设计流程 316
11.1.4 基于ARM处理器的嵌入式系统 319
11.2 嵌入式系统的硬件系统设计 321
11.2.1 嵌入式微处理器的选型 322
11.2.2 处理器最小系统 324
11.2.3 电源模块 324
11.2.4 时钟模块 325
11.2.5 人机交互模块 325
11.2.6 通信接口 327
11.3 嵌入式系统的软件系统设计 328
11.3.1 嵌入式软件的系统结构 329
11.3.2 嵌入式软件系统工作流程 331
11.3.3 嵌入式系统软件的引导和加载 332
11.3.4 嵌入式操作系统LINUX移植 333
11.4 嵌入式系统的测试 335
11.4.1 手工测试 335
11.4.2 自动化测试 336
11.4.3 功能测试和性能测试 337
11.4.4 黑白盒测试 338
11.5 基于STM32处理器的嵌入式计算机实例 338
11.5.1 检测系统原理 339
11.5.2 硬件系统 339
11.5.3 软件系统 343
11.5.4 检测过程 344
附录A ASCII码 346
附录B Cortex-M3指令 347
附录C 常用寄存器描述 351
附录D STM32F103××引脚定义 374
附录E 缩写和封装 381
参考文献 384