第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 I2 C总线术语 247
10.2 I2C总线原理 247
10.2.1 I2 C硬件构成 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 I2 C主模式 263
10.5.2 I2 C从模式 265
10.5.3 中断事件和传输错误 266
10.6 I2C应用设计 268
10.6.1 I2 C常用库函数 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