第一篇 预备篇 3
第1章 嵌入式系统 3
1.1 嵌入式系统概述 3
1.1.1 嵌入式系统的概念 3
1.1.2 嵌入式系统的发展 4
1.1.3 嵌入式系统的分类 5
1.2 嵌入式系统组成 5
1.2.1 嵌入式系统硬件组成 6
1.2.2 嵌入式系统软件组成 8
1.3 嵌入式系统应用 10
1.4 嵌入式系统开发流程 10
1.4.1 嵌入式硬件开发流程 11
1.4.2 嵌入式软件开发流程 11
1.5 本章小结 13
思考与扩展 13
第2章 STM32嵌入式芯片 14
2.1 ARM处理器 14
2.1.1 ARM体系结构的特点 15
2.1.2 ARM系列微处理器 15
2.2 ARM Cortex-M3系列处理器 17
2.2.1 ARM Cortex-M3原理 17
2.2.2 ARM Cortex-M3应用与编程 20
2.3 STM32系列芯片 21
2.3.1 STM32系列芯片概述 21
2.3.2 STM32的时钟系统 24
2.4 本章小结 26
思考与扩展 26
第3章 制作STM32最小系统开发板 27
3.1 电路设计工具简介和安装 27
3.1.1 Altium Designer简介 27
3.1.2 安装Altium Designer 28
3.1.3 DXP平台简介 30
3.1.4 电路设计过程 31
3.2 STM32最小系统开发板 32
3.2.1 STM32最小系统 32
3.2.2 最小系统开发板设计实例 35
3.3 焊制STM32开发板 37
3.3.1 焊接工具介绍 37
3.3.2 焊接方法 37
3.3.3 焊接注意事项 39
3.4 本章小结 40
思考与扩展 40
第4章 搭建软件开发环境 41
4.1 MDK-Keil μ Vision简介 41
4.2 MDK-Keil μ ision 5安装及设置 42
4.3 安装USB转串口驱动 48
4.4 安装烧录工具和调试助手 50
4.5 本章小结 50
思考与扩展 50
第二篇 基础篇 53
第5章 STM32开发基础知识 53
5.1 STM32的开发方式 53
5.2 STM32的编程语言 54
5.3 STM32固件库简介 55
5.3.1 CMSIS标准 55
5.3.2 STM32固件库结构 56
5.4 实训一MDK 5下STM32的程序开发 57
5.4.1 创建工程模板 57
5.4.2 创建新工程 59
5.4.3 程序编译配置 65
5.4.4 烧录程序 68
5.5 本章小结 71
思考与扩展 72
第6章 STM32的I/O应用 73
6.1 STM32I/O简介 73
6.1.1 GPIO的8种工作模式 73
6.1.2 GPIO相关寄存器配置 77
6.1.3 开启I/O端口时钟 81
6.2 SysTick定时器 82
6.3 实训二I/O口位输出(流水灯)实验 84
6.3.1 实训设计 84
6.3.2 实训过程 84
6.3.3 实训相关问题 87
6.4 实训三I/O口位输入(按键)实验 87
6.4.1 实训设计 87
6.4.2 实训过程 88
6.4.3 实训相关问题 92
6.5 实训四I/O口组输出(扫描数码管)实验 92
6.5.1 实训设计 92
6.5.2 实训过程 94
6.5.3 实训相关问题 97
6.6 本章小结 97
思考与扩展 97
第7章 STM32的串口应用 99
7.1 串口通信简介 99
7.2 STM32的串口通信 100
7.3 实训五 串口输入与输出实验 102
7.3.1 实训设计 102
7.3.2 实训过程 103
7.3.3 实训相关问题 106
7.4 本章小结 106
思考与扩展 107
第8章 STM32的中断应用 108
8.1 STM32的中断向量表 108
8.2 嵌套向量中断控制器 109
8.3 EXTI外部中断 112
8.3.1 EXTI初始化配置 113
8.3.2 编写中断服务函数 114
8.3.3 外部中断配置过程 115
8.4 实训六 中断按键实验 116
8.4.1 实训设计 116
8.4.2 实训过程 116
8.4.3 实训相关问题 118
8.5 本章小结 119
思考与扩展 119
第9章 STM32的定时器应用 120
9.1 STM32通用定时器简介 120
9.2 通用定时器相关寄存器 122
9.3 实训七 定时器中断实验 126
9.3.1 实训设计 126
9.3.2 实训过程 127
9.3.3 实训相关问题 129
9.4 本章小结 130
思考与扩展 130
第10章 STM32的PWM输出 131
10.1 STM32的PWM简介 131
10.2 PWM输出相关寄存器 132
10.3 实训八 PWM输出实验 137
10.3.1 实训设计 137
10.3.2 实训过程 137
10.3.3 实训相关问题 140
10.4 本章小结 140
思考与扩展 140
第11章 STM32的DMA应用 141
11.1 DMA简介 141
11.2 STM32的DMA概述 141
11.3 DMA操作相关寄存器 145
11.4 实训九 板上串口DMA发送实验 148
11.4.1 实训设计 148
11.4.2 实训过程 150
11.4.3 实训相关问题 153
11.5 本章小结 153
思考与扩展 153
第12章 STM32的ADC应用 155
12.1 STM32的ADC概述 155
12.2 ADC操作相关寄存器 158
12.3 实训十 ADC模/数转换实验 163
12.3.1 实训设计 163
12.3.2 实训过程 164
12.3.3 实训相关问题 168
12.4 本章小结 168
思考与扩展 168
第三篇 应用篇 173
第13章 STM32与步进电机 173
13.1 步进电机简介 173
13.2 L298N电机驱动芯片 175
13.3 实训十一 步进电机实验 178
13.3.1 实训设计 178
13.3.2 实训过程 180
13.4 本章小结 181
思考与扩展 181
第14章 STM32与舵机 182
14.1 舵机简介 182
14.2 舵机的规格和选型 183
14.3 实训十二 舵机实验 186
14.3.1 实训设计 186
14.3.2 实训过程 187
14.4 本章小结 190
思考与扩展 190
第15章 STM32与语音合成 191
15.1 SYN6288中文语音合成芯片 191
15.2 SYN6288芯片控制方法 193
15.3 SYN6288通信控制 194
15.4 实训十三 语音合成实验 197
15.4.1 实训设计 197
15.4.2 实训过程 198
15.5 本章小结 200
思考与扩展 200
第16章 STM32与RFID读卡器 201
16.1 MFRC522芯片 201
16.2 STM32的SPI简介 205
16.3 实训十四 RFID读卡器实验 206
16.3.1 实训设计 206
16.3.2 实训过程 206
16.4 本章小结 214
思考与扩展 214
第17章 STM32与蓝牙串口 215
17.1 蓝牙技术简介 215
17.2 HC-05蓝牙串口通信模块 216
17.3 实训十五 蓝牙实验 217
17.3.1 实训设计 217
17.3.2 实训过程 218
17.4 本章小结 223
思考与扩展 223
第18章 STM32与人体红外感应 224
18.1 HC-SR501人体红外模块 224
18.2 实训十六 人体红外感应实验 227
18.2.1 实训设计 227
18.2.2 实训过程 227
18.3 本章小结 231
思考与扩展 231
第四篇 实战篇 235
第19章 遥控小车系统设计与实现 235
19.1 系统概述 235
19.2 E32-TTL-100无线串口模块 235
19.3 系统设计 237
19.3.1 双路ADC遥控器设计 238
19.3.2 小车主控模块设计 241
19.4 遥控小车系统功能 246
19.5 本章小结 246
第20章 简易交互狗系统设计与实现 247
20.1 系统概述 247
20.2 TTP223触摸传感器模块 247
20.3 简易交互狗系统设计 248
20.3.1 系统软件设计 249
20.3.2 系统硬件连接 254
20.4 简易交互狗系统功能 256
20.5 本章小结 256
第21章 电子驱蚊器系统设计与实现 258
21.1 系统概述 258
21.2 合成声波设计 259
21.3 电子驱蚊系统设计 260
21.3.1 系统软件设计 260
21.3.2 系统硬件连接 267
21.4 电子灭蚊器功能 267
21.5 本章小结 268
第22章 室内环境监控系统设计 269
22.1 系统概述 269
22.2 DHT11温湿度传感器 269
22.3 BH1750光照强度传感器 271
22.4 MQ135空气质量传感器 272
22.5 STM32的12C简介 273
22.6 室内环境监控系统设计 274
22.7 本章小结 282
附录A STM32编程C语言基础 283
A.1 STM32编程C语言简介 283
A.2 STM32编程中的数据类型 283
A.3 STM32编程常用C语言知识点 285
A.3.1 位操作 285
A.3.2 宏定义和条件编译 287
A.3.3 外部声明 288
A.3.4 定义类型别名 288
A.3.5 结构体 289
参考文献 291