第1 章 ARM 嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统定义及特征 1
1.1.2 嵌入式系统发展 1
1.1.3 嵌入式系统应用 2
1.2 ARM 处理器 3
1.2.1 ARM 处理器分类 3
1.2.2 ARM Cortex 处理器 4
1.2.3 ARM Cortex - M3 处理器 5
1.3 STM32F10x 系列微控制器 6
1.3.1 STM32 微控制器分类 6
1.3.2 STM32F10x 处理器内部结构 7
1.3.3 STM32 系列处理器的优点 8
1.3.4 STM32 处理器开发工具 9
思考与练习 9
第2 章 STM32 单片机结构和最小系统 11
2.1 STM32F103 微控制器外部结构 11
2.2 STM32F103 总线和存储器结构 13
2.2.1 总线结构 13
2.2.2 存储器结构和映射 14
2.2.3 位带 17
2.3 时钟电路、复位电路、启动配置 20
2.3.1 时钟控制 20
2.3.2 复位 22
2.3.3 启动配置 23
2.4 最小系统设计 23
思考与练习 27
第3 章 基于标准外设库的C 语言程序设计基础 28
3.1 嵌入式C 语言基础 28
3.1.1 文件结构 28
3.1.2 程序版式 29
3.1.3 C 语言知识精编 30
3.2 CMSIS---Cortex - M3 微控制器软件接口标准 42
3.2.1 CMSIS 概述 42
3.2.2 STM32F10x 标准外设库 43
3.3 基于MDK 的STM32 开发 47
3.3.1 Keil MDK 概述 47
3.3.2 开发过程 47
思考与练习 52
第4 章 STM32 单片机通用输入输出GPIO 53
4.1 STM32F10x 的输入输出基本结构 53
4.2 GPIO 相关功能寄存器 54
4.3 STM32F10x 的IO 口功能特点 57
4.3.1 通用功能输入输出GPIO 58
4.3.2 复用功能输入输出AFIO 58
4.3.3 外部中断/唤醒线 58
4.4 STM32F10x 的输入输出配置 59
4.4.1 GPIO 输入配置 59
4.4.2 GPIO 输出配置 60
4.4.3 复用功能配置 61
4.4.4 模拟输入配置 61
4.4.5 外设的GPIO 配置 62
4.5 GPIO 应用设计 64
4.5.1 GPIO 常用库函数 64
4.5.2 GPIO 使用流程 75
4.5.3 GPIO 应用实例 75
思考与练习 78
第5 章 STM32 单片机外部中断 79
5.1 中断的相关概念 79
5.2 STM32F103 中断系统组成 80
5.2.1 中断源 80
5.2.2 中断向量 80
5.2.3 中断控制器 83
5.2.4 相关功能寄存器 85
5.3 中断控制 88
5.3.1 中断屏蔽控制 88
5.3.2 中断优先级控制 88
5.4 中断执行过程和中断嵌套 89
5.5 STM32 外部中断应用设计 90
5.5.1 STM32 外部中断常用的库函数 90
5.5.2 STM32 中断的设计 100
5.5.3 外部中断应用实例 105
思考与练习 108
第6 章 STM32 通用定时器 110
6.1 STM32 定时器的组成结构 110
6.1.1 STM32 定时器概述 110
6.1.2 STM32 通用定时器的结构特性 112
6.2 通用定时器相关寄存器 114
6.3 通用定时器的功能及工作方式 127
6.3.1 时钟的选择 127
6.3.2 时基单元 130
6.3.3 计数模式 131
6.4 通用定时器应用设计 133
6.4.1 通用定时器常用库函数 133
6.4.2 通用定时器使用流程 143
6.4.3 定时器设计实例 145
思考与练习 148
第7 章 STM32 通用同步/异步收发器USART 150
7.1 串行通信基础 150
7.1.1 串行通信与并行通信 150
7.1.2 串行通信方式 150
7.1.3 串行通信的数据传输形式 151
7.1.4 波特率 151
7.2 STM32 的USART 的结构特性 151
7.3 USART 相关寄存器 153
7.4 STM32 串行通信的工作方式 162
7.4.1 数据发送和接收 162
7.4.2 多处理器通信 163
7.4.3 其他方式 164
7.5 USART 应用设计 167
7.5.1 USART 常用库函数 167
7.5.2 USART 使用流程 174
7.5.3 STM32 与上位机通信设计实例 175
7.6 串行通信接口抗干扰设计 178
7.6.1 TTL 电平通信接口 179
7.6.2 标准串行通信接口RS -232C 179
7.6.3 RS -485 双机通信接口 180
思考与练习 180
第8 章 直接存储器存取DMA 181
8.1 DMA 简介 181
8.2 STM32 的DMA 结构 181
8.3 DMA 相关寄存器 183
8.4 DMA 的工作过程 187
8.5 DMA 应用设计 189
8.5.1 DMA 常用库函数 189
8.5.2 DMA 使用流程 198
8.5.3 DMA 数据传输应用实例 200
思考与练习 206
第9 章 STM32 的模数转换器ADC 208
9.1 STM32 应用系统输入输出通道 208
9.2 ADC 的性能指标 209
9.3 STM32 的ADC 的特性与结构 211
9.4 ADC 相关寄存器 213
9.5 ADC 的工作模式控制 223
9.5.1 开关、时钟及通道 223
9.5.2 模式控制 224
9.5.3 中断和DMA 225
9.5.4 其他功能 225
9.6 ADC 应用设计 227
9.6.1 ADC 常用库函数 227
9.6.2 ADC 使用流程 238
9.6.3 STM32 的ADC 电压采集实例 239
思考与练习 245
第10 章 STM32 的集成电路总线I2C 246
10.1 I2C 总线概述 246
10.1.1 I2C 总线特点 246
10.1.2 I2C 总线标准的发展 247
10.1.3 I2C 总线术语 247
10.2 I2C 总线原理 247
10.2.1 I2C 硬件构成 247
10.2.2 位传输 248
10.2.3 数据传输格式 249
10.3 STM32 的I2C 的特性和结构 251
10.4 STM32 的I2C 相关功能寄存器 253
10.5 STM32 的I2C 的通信实现 263
10.5.1 I2C 主模式 263
10.5.2 I2C 从模式 265
10.5.3 中断事件和传输错误 266
10.6 I2C 应用设计 268
10.6.1 I2C 常用库函数 268
10.6.2 I2C 使用流程 276
10.6.3 I2C 扩展EEPROM 实例 277
思考与练习 291
第11 章 串行外设接口SPI 292
11.1 SPI 基础 292
11.1.1 SPI 接口定义 292
11.1.2 单机和多机通信 292
11.2 STM32 的SPI 特性和结构 294
11.3 SPI 相关寄存器 296
11.4 STM32 的SPI 工作过程 303
11.4.1 从选择(NSS)脚管理 303
11.4.2 时钟相位与极性 303
11.4.3 SPI 主模式 304
11.4.4 SPI 从模式 305
11.4.5 状态标志 306
11.4.6 CRC 校验 306
11.4.7 利用DMA 的SPI 通信 307
11.4.8 错误标志 307
11.4.9 中断 307
11.5 SPI 应用设计 308
11.5.1 SPI 常用库函数 308
11.5.2 SPI 使用流程 315
11.5.3 STM32 的SPI 设计实例 315
思考与练习 321
第12 章 综合设计 322
12.1 STM32 嵌入式系统设计总体方案 322
12.2 基于STM32 和GSM 的远程环境监控系统 322
12.2.1 硬件设计 323
12.2.2 软件设计 325
12.3 基于STM32 的Zigbee 无线通信 327
12.3.1 硬件设计 328
12.3.2 软件设计 329
12.4 基于STM32 的简易数码相机 332
12.4.1 硬件设计 332
12.4.2 FAT 文件系统 333
12.4.3 FAT16 存储原理 335
12.4.4 软件设计 336
参考文献 341
Ⅸ"