第1章 微型计算机基础 1
1.1 计算机中的数制与编码 1
1.1.1 数制及其转换 1
1.1.2 计算机中数的表示与运算 4
1.1.3 BCD码和ASCII码 10
1.2 微型计算机概述 12
1.2.1 微型计算机基本概念 12
1.2.2 微型计算机系统组成 16
1.2.3 微型计算机的工作过程 18
1.3 嵌入式系统概述 19
1.3.1 嵌入式系统的诞生与发展历程 19
1.3.2 ARM处理器的体系 20
1.3.3 STM32系列处理器介绍 22
习题1 26
第2章 Cortex-M3基础 27
2.1 8位微处理器的功能结构 27
2.2 CM3处理器简介 30
2.2.1 CM3处理器的结构 30
2.2.2 CM3处理器的特点 32
2.3 CM3的寄存器组 34
2.3.1 通用寄存器 35
2.3.2 连接寄存器R14 35
2.3.3 程序计数器R15 35
2.3.4 特殊功能寄存器 35
2.4 操作模式和特权级别 38
2.5 堆栈与堆栈指针 39
2.5.1 堆栈的基本概念 39
2.5.2 CM3的堆栈指针 40
2.5.3 CM3堆栈的实现与应用 40
2.6 复位序列 42
2.7 CM3的存储器系统 43
2.7.1 大于8位的数据的存储 43
2.7.2 CM3存储器映射 45
2.7.3 位带操作 49
习题2 53
第3章 Cortex-M3的指令系统与汇编程序设计 54
3.1 CM3指令的结构 54
3.1.1 Thumb-2指令集 54
3.1.2 CM3指令的格式 55
3.1.3 CM3指令的后缀 56
3.2 CM3指令的寻址方式 57
3.2.1 立即操作数的寻址 58
3.2.2 寄存器操作数的寻址 59
3.2.3 存储器操作数的寻址 60
3.3 CM3指令集 62
3.3.1 存储器访问指令 62
3.3.2 数据处理运算指令 66
3.3.3 分支转移指令 70
3.3.4 其他指令 72
3.3.5 伪指令 73
3.4 ARM汇编程序设计基础 74
3.4.1 ARM汇编指示命令 74
3.4.2 ARM汇编语句格式 81
3.4.3 ARM汇编语言格式 85
3.4.4 ARM汇编语言基本结构程序设计方法 86
习题3 95
第4章 接口技术 97
4.1 I/O接口概述 97
4.1.1 I/O接口电路的作用 97
4.1.2 接口和端口 98
4.1.3 I/O端口的编址 99
4.2 CPU与外设之间的数据传送方式 100
4.2.1 无条件传送 100
4.2.2 查询式传送 101
4.2.3 中断传送方式 102
4.2.4 DMA传送方式 103
4.2.5 几种传送方式的比较 103
4.3 并行接口基本电路 104
4.3.1 缓冲与锁存电路 104
4.3.2 上拉与下拉输入电路 104
4.3.3 OC/OD输出电路 105
4.3.4 推挽输出电路 105
4.4 STM32的GPIO 106
4.4.1 GPIO的端口电路 106
4.4.2 GPIO的工作方式与寄存器配置 107
4.4.3 GPIO引脚的复用与重映射 110
4.5 GPIO的应用 111
4.5.1 功能要求与硬件设计 111
4.5.2 基于汇编的GPIO应用 112
4.5.3 基于C寄存器操作的GPIO应用 116
4.5.4 基于C库函数的GPIO应用 120
习题4 123
第5章 中断技术 124
5.1 中断系统概述 124
5.2 中断源及其管理 125
5.2.1 中断源的分类 125
5.2.2 STM32的中断源 126
5.2.3 STM32中断源的输入管理 127
5.3 中断优先级 129
5.3.1 中断优先级的排队方法 129
5.3.2 CM3中断源的优先级划分 131
5.3.3 优先级分组 132
5.3.4 PRIMASK、FAULTMASK和BASEPRI寄存器 134
5.4 中断服务程序与中断向量表 134
5.4.1 中断服务程序 134
5.4.2 中断向量 135
5.5 中断的处理过程 137
5.6 中断延迟及其改善 140
5.6.1 咬尾中断 141
5.6.2 晚到异常 141
5.7 STM32中断应用 142
习题5 145
第6章 定时器与计数器 147
6.1 STM32的时钟系统 147
6.1.1 32位处理器时钟系统 147
6.1.2 STM32处理器时钟系统框图 148
6.1.3 STM32时钟源 150
6.1.4 SYSCLK时钟源切换 151
6.1.5 时钟安全系统(CSS) 151
6.1.6 时钟输出 152
6.1.7 STM32时钟初始化 152
6.2 定时器 153
6.2.1 定(延)时基本方法 153
6.2.2 定时器的一般工作原理 153
6.2.3 STM32定时器概述 155
6.3 STM32的通用定时器 156
6.3.1 STM32定时器工作原理分析 158
6.3.2 时基 160
6.3.3 输出比较模式 164
6.3.4 PWM输出 168
6.3.5 输入捕获 172
6.3.6 单脉冲输出(One Pulse Mode,OPM) 175
6.3.7 综合应用 176
习题6 181
第7章 D/A与A/D转换技术 183
7.1 D/A转换基础 184
7.1.1 转换原理 184
7.1.2 D/A转换器的主要性能指标 186
7.2 STM32的DAC 187
7.2.1 STM32 DAC功能简介 187
7.2.2 STM32 DAC的工作模式 188
7.2.3 STM32 DAC的转换 191
7.2.4 STM32 DAC的应用 192
7.3 A/D转换基础 198
7.3.1 A/D转换原理 198
7.3.2 A/D转换器分类 199
7.3.3 A/D转换性能指标 203
7.3.4 多通道数据采集 204
7.4 STM32的ADC 205
7.4.1 STM32 ADC功能简介 206
7.4.2 STM32 ADC的工作模式 207
7.4.3 STM32 ADC的转换 211
7.4.4 STM32片内温度传感器 213
7.4.5 STM32 ADC的应用 215
习题7 219
第8章 串行通信技术 220
8.1 通信技术基础 220
8.1.1 概述 220
8.1.2 异步通信与同步通信 222
8.1.3 通信数据校验 225
8.1.4 数据的表示 227
8.2 STM32的异步串行通信 231
8.2.1 STM32 USART功能简介 231
8.2.2 USART工作过程分析 232
8.3 STM32的串口通信应用 235
习题8 240
第9章 存储器及其扩展 241
9.1 存储器概述 241
9.2 存储器系统的层次结构 242
9.2.1 存储器系统的层次结构概述 242
9.2.2 Cache 243
9.2.3 虚拟内存 245
9.3 半导体存储器 246
9.3.1 半导体存储器的分类 246
9.3.2 半导体存储芯片的一般结构 247
9.3.3 静态RAM 248
9.3.4 动态RAM 249
9.3.5 ROM 251
9.3.6 Flash 254
9.4 存储芯片的主要技术指标 256
9.5 存储器的扩展 257
9.5.1 存储器扩展时的问题 257
9.5.2 存储容量的位扩展 258
9.5.3 存储容量的字扩展 259
9.5.4 32位数据总线的存储器接口设计 263
9.6 FSMC扩展存储器接口 267
9.6.1 FSMC简介 267
9.6.2 FSMC扩展存储器 269
习题9 276
第10章 嵌入式接口技术 279
10.1 扩展技术概述 279
10.1.1 扩展的任务与要求 279
10.1.2 扩展的基本方法 280
10.2 I/O模拟时序接口扩展 282
10.2.1 1602内部的存储器 282
10.2.2 1602的引脚与时序 283
10.2.3 STM32扩展1 602 284
10.3 SPI总线 288
10.3.1 SPI总线简介 288
10.3.2 SPI从机选择 289
10.3.3 SPI时钟的相位和极性 290
10.3.4 STM32的SPI 291
10.3.5 SPI在记录智能仪表历史数据中的应用 295
10.4 I2C总线 302
10.4.1 I2C总线简介 302
10.4.2 I2C的信号 304
10.4.3 I2C总线工作过程 305
10.4.4 I2C总线的时钟同步与仲裁 306
10.4.5 STM32的I2C 308
10.4.6 I2C在保存智能仪表运行参数中的应用 311
习题10 315
参考文献 317