本书介绍了嵌入式系统的概念、ARM处理器的发展历程、Cortex系列处理器和STM32微控制器,详细讲解了ARM Cortex-M3微处理器的体系结构、指令系统以及基于该处理器的程序设计方法。在硬件接口编程部分,本书围绕STM32F103微控制器,详细介绍了GPIO、定时器、外部中断、USART、I2C和ADC等关键外设的原理及应用,通过大量的实例仿真,帮助读者掌握这些外设的使用方法和编程技巧。此外,本书还介绍了嵌入式操作系统的基本概念,并以μC/OS-II为例,深入讲解了嵌入式应用程序的开发过程,使读者能够了解并掌握嵌入式操作系统在复杂嵌入式系统中的应用。
本书可作为高等院校计算机、电子信息、自动化等专业本科生、研究生嵌入式系统课程的教材,也可供从事嵌入式系统开发的技术人员参考。
第1章 ARM嵌入式系统概述 1
1.1 嵌入式系统概述 2
1.1.1 计算机的发展历程 2
1.1.2 “后PC时代”计算机的
发展趋势 2
1.1.3 嵌入式系统的发展历程 3
1.2 ARM处理器的发展历程 5
1.2.1 ARM公司的发展历程 5
1.2.2 ARM架构及处理器的发展历程 6
1.3 ARM Cortex处理器 9
1.3.1 ARM Cortex处理器的分类 9
1.3.2 Cortex-M系列处理器 10
1.3.3 Cortex-M3处理器 11
1.4 STM32微控制器 12
1.4.1 STM32系列微控制器命名规则 13
1.4.2 STM32主要产品线 14
1.5 Keil MDK5嵌入式系统集成开发工具 15
1.5.1 Keil MDK5概述 15
1.5.2 基于ARM Cortex-M3处理器的
工程构建 16
1.5.3 基于STM32F1系列微控制器
芯片支持包的工程构建 17
1.6 嵌入式系统设计与开发 18
1.6.1 嵌入式交叉开发环境 18
1.6.2 嵌入式软件开发 19
1.6.3 基于Proteus的嵌入式系统
硬件设计 19
1.6.4 嵌入式系统调试 22
1.7 嵌入式系统学习建议 24
1.7.1 ARM Cortex-M3处理器学习
难点及建议 24
1.7.2 STM32F103微控制器学习
难点及建议 24
1.7.3 嵌入式系统开发学习难点及建议 25
本章小结 26
习题 27
第2章 ARM Cortex-M3 微处理器
体系结构 28
2.1 ARM Cortex体系结构概述 29
2.1.1 冯??诺依曼结构和哈佛结构 29
2.1.2 复杂指令集CISC和精简
指令集RISC 30
2.1.3 操作模式和特权级别 31
2.2 Cortex-M3的组成 33
2.2.1 Cortex-M3处理器核 33
2.2.2 存储器保护单元MPU 34
2.2.3 Cortex-M3总线接口 35
2.2.4 跟踪系统 38
2.2.5 调试接口 39
2.3 寄存器阵列 39
2.3.1 通用寄存器组 39
2.3.2 特殊功能寄存器 41
2.4 存储器系统 44
2.4.1 Cortex-M3存储器映射 44
2.4.2 位带操作 46
2.4.3 存储格式 50
2.5 中断与异常 51
2.5.1 嵌套向量中断控制器NVIC 51
2.5.2 中断向量表 54
2.5.3 系统复位过程 55
本章小结 56
习题 57
第3章 ARM Cortex-M3指令系统 60
3.1 汇编语言基础 61
3.1.1 ARM汇编语言指令集简介 61
3.1.2 ARM汇编语言源程序的组成 61
3.1.3 Thumb-2指令集的编码格式 64
3.1.4 纯汇编工程的构建 66
3.2 寻址方式 72
3.2.1 立即数寻址方式 73
3.2.2 寄存器(寄存器移位)寻址方式 77
3.2.3 存储器寻址方式 77
3.2.4 地址型操作数寻址方式 80
3.3 汇编语言指令系统 80
3.3.1 算术运算指令 84
3.3.2 逻辑运算与位操作指令 86
3.3.3 内部数据传送指令 90
3.3.4 存储器数据传输(Load/Store)
指令 92
3.3.5 比较与测试指令 95
3.3.6 控制转移指令 96
本章小结 97
习题 98
第4章 基于ARM Cortex-M3微处理器的
程序设计 102
4.1 ARM汇编语言的程序结构 102
4.2 ARM汇编器伪指令 104
4.2.1 段定义伪指令 104
4.2.2 数据定义伪指令 105
4.2.3 过程定义伪指令 107
4.2.4 宏定义伪指令 108
4.2.5 其他伪指令 108
4.3 ARM汇编语言程序设计 110
4.3.1 顺序程序 110
4.3.2 分支程序 111
4.3.3 循环程序 113
4.3.4 过程调用 116
4.4 C与汇编语言混合编程 118
4.4.1 ARM架构过程调用标准
AAPCS 119
4.4.2 C程序内嵌汇编代码 121
4.4.3 C程序调用汇编过程 123
4.4.4 汇编程序调用C函数 126
4.4.5 C与汇编程序变量互访 129
本章小结 131
习题 131
第5章 STM32F103微控制器 133
5.1 STM32系列微控制器概述 133
5.1.1 STM32系列微控制器 134
5.1.2 STM32F103系列微控制器 134
5.2 STM32F103微控制器组成 136
5.2.1 系统架构 136
5.2.2 存储结构 139
5.2.3 中断系统 143
5.2.4 时钟系统 149
5.2.5 引脚定义 153
5.2.6 启动配置 153
5.3 STM32F103微控制器最小系统 154
5.3.1 电源电路 156
5.3.2 时钟电路 156
5.3.3 复位电路 157
5.3.4 调试与下载电路 158
本章小结 159
习题 160
第6章 基于STM32F103微控制器的
嵌入式系统开发基础 162
6.1 STM32开发模式 163
6.1.1 寄存器开发模式 165
6.1.2 标准外设库开发模式 168
6.1.3 HAL库开发模式 170
6.1.4 LL库开发模式 171
6.2 CMSIS软件接口标准及其支持包 173
6.2.1 CMSIS软件接口标准 174
6.2.2 STM32F1xx微控制器的设备
支持包下载与安装 175
6.2.3 基于设备支持包的工程构建 176
6.3 STM32F1标准外设库 177
6.3.1 STM32F10x标准外设库的
组成 177
6.3.2 STM32F10x标准外设库中的
文件关系 179
6.3.3 标准外设库C语言基础 185
6.4 基于标准外设库的工程构建 188
6.4.1 创建存放工程的工程文件夹 188
6.4.2 在Keil MDK中创建工程 190
6.5 嵌入式系统的仿真与调试 198
6.5.1 基于Proteus的仿真调试 198
6.5.2 基于硬件调试器的调试 199
本章小结 201
习题 202
第7章 GPIO原理及应用 204
7.1 GPIO概述 205
7.2 STM32F103中的GPIO 206
7.2.1 GPIO的引脚描述 206
7.2.2 GPIO的内部结构 207
7.2.3 GPIO的工作模式 208
7.2.4 GPIO的内部寄存器 209
7.3 GPIO库函数开发原理 213
7.4 基于寄存器的GPIO输入输出
仿真与实现 217
7.4.1 功能描述与硬件设计 217
7.4.2 软件设计与仿真实现 217
7.5 基于标准外设库的GPIO输入输出
仿真与实现 221
7.5.1 标准外设库中与GPIO相关的
常用接口函数 221
7.5.2 GPIO输入输出仿真与实现 222
本章小结 227
习题 228
第8章 定时器原理及应用 229
8.1 定时器概述 229
8.2 STM32F103的定时器 231
8.2.1 STM32F103定时器分类 231
8.2.2 基本定时器 233
8.2.3 通用定时器 235
8.2.4 高级控制定时器 248
8.3 基于寄存器操作的定时器应用实例
?仿真与实现 248
8.3.1 功能描述与硬件设计 248
8.3.2 软件设计与仿真实现 249
8.4 基于标准外设库的定时器应用
实例仿真与实现 252
8.4.1 标准外设库中与通用定时器
相关的常用接口函数 253
8.4.2 软件设计与仿真实现 253
本章小结 258
习题 259
第9章 外部中断及应用 260
9.1 中断概述 260
9.2 STM32F103的外部中断 262
9.2.1 NVIC的主要寄存器 263
9.2.2 EXTI内部结构 270
9.2.3 EXTI工作原理 272
9.2.4 EXTI内部寄存器 272
9.3 基于寄存器操作的中断应用实例
?仿真与实现 274
9.3.1 功能描述与硬件设计 274
9.3.2 软件设计与仿真实现 274
9.4 基于标准外设库的中断应用实例
?仿真与实现 279
9.4.1 标准外设库中与EXTI相关的
接口函数 279
9.4.2 软件设计与仿真实现 280
本章小结 285
习题 286
第10章 USART原理及应用 287
10.1 数据通信的基本概念 287
10.2 STM32F103中的USART 290
10.2.1 USART的内部结构 290
10.2.2 USART的数据传输过程 293
10.2.3 USART中断 296
10.2.4 USART内部寄存器 297
10.3 基于寄存器操作的USART应用
实例仿真与实现 300
10.3.1 功能描述与硬件设计 300
10.3.2 软件设计与仿真实现 301
10.4 基于标准外设库的USART应用
实例仿真与实现 309
10.4.1 标准外设库中与USART
相关的接口函数 309
10.4.2 软件设计与仿真实现 310
本章小结 317
习题 318
第11章 I2C串行通信原理及应用 319
11.1 I2C串行通信原理 319
11.2 STM32F103中的I2C接口 321
11.2.1 STM32F103微控制器I2C
接口简介 322
11.2.2 STM32F103微控制器I2C
接口工作原理 323
11.2.3 STM32F103微控制器I2C
内部寄存器 327
11.3 基于寄存器操作的I2C应用实例
?仿真与实现 335
11.3.1 功能描述与硬件设计 336
11.3.2 软件设计与仿真实现 336
11.4 基于标准外设库的I2C应用实例
仿真与实现 341
11.4.1 标准外设库中与I2C相关的
接口函数 341
11.4.2 软件设计与仿真实现 342
本章小结 349
习题 350
第12章 ADC原理及应用 351
12.1 ADC概述 352
12.2 STM32F103中的ADC接口 354
12.2.1 ADC接口简介 354
12.2.2 ADC的内部结构 355
12.2.3 STM32F103的ADC工作原理 357
12.2.4 ADC内部寄存器 362
12.3 基于寄存器操作的ADC应用实例
仿真与实现 367
12.3.1 功能描述与硬件设计 367
12.3.2 软件设计与仿真实现 367
12.4 基于标准外设库的ADC应用实例
仿真与实现 373
12.4.1 标准外设库中与ADC相关的
接口函数 373
12.4.2 软件设计与仿真实现 373
本章小结 380
习题 381
第13章 基于嵌入式操作系统的应用
?程序开发 382
13.1 嵌入式应用程序开发的特点 382
13.1.1 开发调试环境的建立 383
13.1.2 基于嵌入式处理器的直接
编程技术 384
13.1.3 基于嵌入式操作系统的
编程技术 385
13.2 μC/OS-Ⅱ应用程序结构分析 386
13.3 基于μC/OS-Ⅱ的程序设计技术 388
13.3.1 任务划分与设计 388
13.3.2 任务间行为同步 390
13.3.3 任务间共享资源同步 392
13.3.4 任务间数据通信 394
13.4 μC/OS-Ⅱ在ARM微处理器上的
移植 394
13.4.1 μC/OS-Ⅱ对处理器的要求 394
13.4.2 μC/OS-Ⅱ移植相关文件 394
13.4.3 μC/OS-Ⅱ移植过程 397
13.5 应用程序设计实例 407
13.5.1 功能描述与硬件设计 407
13.5.2 应用程序设计 408
本章小结 414
习题 415
参考文献 416