第1章 Cortex-M3体系结构 1
1.1 Cortex-M3简介 1
1.1.1 ARM的历史 1
1.1.2 Cortex-M3的特征 6
1.2 内核寄存器 8
1.2.1 通用寄存器 9
1.2.2 连接寄存器 9
1.2.3 程序计数器 9
1.2.4 专用寄存器 10
1.3 操作模式和特权级别 11
1.4 存储器映射 12
1.4.1 地址空间 12
1.4.2 位带操作 15
1.4.3 端模式 19
1.5 总线接口 20
1.5.1 3级流水线 20
1.5.2 总线矩阵 20
1.6 存储器保护单元(MPU) 22
1.6.1 MPU概述 22
1.6.2 MPU的寄存器 22
1.6.3 MPU的使用 23
1.7 中断和异常 24
1.7.1 异常类型 24
1.7.2 异常优先级 25
1.7.3 异常响应过程 27
1.8 指令系统 30
1.9 小结 32
第2章 LPC17XX的硬件设计基础 33
2.1 LPC 17XX概述 33
2.1.1 简介 33
2.1.2 特性 34
2.1.3 LPC17XX的结构图 36
2.2 LPC 17XX的时钟与功率控制 38
2.2.1 振荡器 39
2.2.2 时钟源选择多路复用 41
2.2.3 PLL0 42
2.2.4 时钟分频器 47
2.2.5 功率控制 50
2.3 LPC 17XX的引脚 55
2.3.1 LPC17XX的引脚连接模块 55
2.3.2 LPC17XX的引脚配置寄存器 64
2.4 最小系统设计 67
2.5 小结 69
第3章 LPC1700程序设计基础 70
3.1 RealView MDK开发环境 70
3.1.1 RealView MDK开发环境简介 70
3.1.2 工程创建、编译 72
3.1.3 Flash编程器 79
3.1.4 简易实例 79
3.2 CMSIS———Cortex-M3微控制器软件接口标准 80
3.2.1 CMSIS概述 81
3.2.2 CMSIS编码规范 81
3.2.3 CMSIS文件结构 82
3.2.4 核内外设访问层 83
3.3 LPC 1700 CMSIS标准固件库 89
3.3.1 固件库的组织结构 90
3.3.2 固件库的驱动部分 90
3.3.3 驱动标识定义 92
3.4 小结 93
第4章 系统节拍定时器 94
4.1 系统节拍定时器概述 94
4.2 系统节拍定时器的原理 94
4.3 寄存器 95
4.3.1 系统节拍定时器的控制和状态寄存器(STCTRL) 95
4.3.2 系统节拍定时器的重载值寄存器(STRELOAD) 97
4.3.3 系统节拍定时器的当前值寄存器(STCURR) 98
4.3.4 系统节拍定时器的校准值寄存器(STCALIB) 98
4.4 使用系统节拍定时器测试程序运行时间实例 99
4.4.1 需求分析 99
4.4.2 软件设计 99
4.5 小结 100
第5章 GPIO——通用输入/输出 101
5.1 GPIO的功能 101
5.1.1 数字I/O端口功能 101
5.1.2 可产生中断的数字端口 101
5.1.3 可掉电唤醒 102
5.2 GPIO的寄存器 102
5.2.1 端口方向寄存器(FIOxDIR) 103
5.2.2 端口输出设置寄存器(FIOxSET) 104
5.2.3 端口输出清零寄存器(FIOxCLR) 104
5.2.4 端口引脚寄存器(FIOxPIN) 105
5.2.5 端口屏蔽寄存器(FIOxMASK) 105
5.3 GPIO构建小型声光报警系统实例 106
5.3.1 系统设计 106
5.3.2 硬件设计 106
5.3.3 软件设计 106
5.4 GPIO控制交流接触器实例 107
5.4.1 需求分析 107
5.4.2 硬件设计 107
5.4.3 软件设计 108
5.5 小结 109
第6章 嵌套向量中断 110
6.1 NVIC 110
6.1.1 特性 110
6.1.2 中断源 111
6.1.3 寄存器 113
6.1.4 软件中断 115
6.1.5 NVIC软件编程 116
6.2 外部中断 117
6.2.1 外部中断概述 117
6.2.2 外部中断寄存器 118
6.2.3 外部中断软件设计 120
6.3 GPIO中断 121
6.4 响应过零中断实例 124
6.4.1 需求分析 124
6.4.2 软件设计 125
6.5 小结 126
第7章 定时器 127
7.1 定时器概述 127
7.2 引脚与结构图 128
7.3 寄存器描述 129
7.4 定时器操作举例 136
7.5 软件设计 138
7.5.1 LPC 17XX的定时器固件库 138
7.5.2 定时器的用法 139
7.6 利用LPC 17XX实现频率计实例 141
7.6.1 硬件设计 141
7.6.2 软件设计 142
7.7 小结 144
第8章 通用异步接收/发送器UART 145
8.1 UART概述 145
8.1.1 UART的特点 145
8.1.2 UART的结构原理 146
8.1.3 UART的中断原理 147
8.1.4 基本配置 148
8.1.5 应用 148
8.2 引脚描述 149
8.3 寄存器 150
8.4 UART的编程基础 163
8.4.1 UART的数据处理方式 163
8.4.2 固件库 165
8.5 LPC 17XX与PC串口通信实例 168
8.5.1 硬件设计 168
8.5.2 软件设计 169
8.6 小结 175
第9章 ADC 176
9.1 ADC概述 176
9.2 引脚描述 178
9.3 寄存器 178
9.4 ADC硬件设计实例 185
9.5 LPC 17XX的ADCMSIS固件库 186
9.5.1 固件库的函数 186
9.5.2 固件库的用法 186
9.6 两路ADC通道同时采集实例 190
9.6.1 系统设计分析 190
9.6.2 软件设计 191
9.7 压力传感器A/D采集实例 196
9.7.1 需求分析 196
9.7.2 硬件设计 197
9.7.3 软件设计 197
9.8 小结 200
第10章 DAC 201
10.1 DAC概述 201
10.2 DAC寄存器 202
10.3 DAC实现波形发生器实例 204
10.4 语音报警系统实例 207
10.4.1 需求分析 207
10.4.2 硬件设计 208
10.4.3 软件设计 208
10.5 小结 213
第11章 SPI/SSP 214
11.1 SPI 215
11.1.1 LPC 17XX的SPI概述 215
11.1.2 LPC 17XX的SPI操作方式 215
11.1.3 SPI引脚 217
11.1.4 SPI的数据传输时序 219
11.1.5 SPI寄存器 220
11.2 SSP 224
11.2.1 SSP引脚 224
11.2.2 总线描述 225
11.2.3 寄存器描述 230
11.3 SPI/SSP驱动函数 235
11.4 LPC 17XX的数码管显示实例 237
11.4.1 硬件设计 238
11.4.2 软件设计 238
11.5 小结 240
第12章 I2C 241
12.1 I2C的原理 241
12.1.1 I2C的描述 241
12.1.2 I2C的特点 243
12.1.3 I2C的结构 244
12.2 I2C引脚 247
12.3 I2C操作模式 248
12.3.1 主发送模式 248
12.3.2 主接收模式 250
12.3.3 从接收模式 252
12.3.4 从发送模式 254
12.4 寄存器描述与驱动函数库 256
12.4.1 12C寄存器 256
12.4.2 驱动函数库 263
12.5 12C读写EEPROM实例 265
12.5.1 硬件电路设计 265
12.5.2 软件设计 266
12.6 小结 269
第13章 PWM 270
13.1 PWM概述 270
13.1.1 PWM描述 271
13.1.2 PWM的特性 272
13.1.3 引脚 272
13.2 结构 272
13.3 PWM波形形式 274
13.4 寄存器 275
13.5 PWM应用 282
13.5.1 PWM驱动函数及用法 283
13.5.2 利用双边沿PWM模拟带死区形式的PWM 284
13.6 PWM实现LED灯的亮度调节实例 287
13.6.1 硬件设计 287
13.6 2软件设计 287
13.7 小结 289
第14章 基于LPC1768温控系统的设计实例 290
14.1 系统需求 290
14.2 硬件设计 296
14.3 软件设计 298
14.4 小结 304
第15章 LPC1768的Modbus开关量 305
15.1 需求分析 305
15.1.1 开关量 305
15.1.2 现场总线 305
15.1.3 串行总线概述 306
15.2 硬件设计 307
15.3 软件设计 309
15.3.1 现场总线Modbus 309
15.3.2 Freemodbus的移植与使用 313
15.3.3 开关量操作函数 323
15.4 小结 325
参考文献 326