基础篇 3
第1章 LPC178x系列微控制器概述 3
1.1 Cortex-M3处理器概述 3
1.1.1 Cortex-M3配置选项 3
1.1.2 LPC178x/177x系列微控制器型号与分类 4
1.1.3 LPC178x/177x系列微控制器主要特点 5
1.1.4 LPC178x/177x系列微控制器结构概述 7
1.1.5 LPC178x/177x系列微控制器存储器映射 9
1.1.6 片上存储器 10
1.1.7 片上外设及基址 10
1.2 CMSIS软件接口标准 12
1.2.1 CMSIS层与软件架构 13
1.2.2 CMSIS文件结构 14
第2章 开发工具概述 22
2.1 常用开发工具概览 22
2.1.1 RealView MDK开发环境 22
2.1.2 IAR EWARM开发环境 23
2.1.3 J-Link仿真器 24
2.1.4 ULINK2仿真器 25
2.2 LPC1788评估板简述 26
2.2.1 开发板概览 26
2.2.2 开发板外设接口I/O分配 29
2.3 RealView MDK开发环境快速入门 31
2.3.1 工程项目的建立 31
2.3.2 工程项目的配置 33
2.3.3 编写演示代码 35
2.3.4 工程项目的编译 36
2.3.5 程序下载与调试 37
2.4 IAR开发环境快速入门 40
2.4.1 IAR工程项目的快速建立 40
2.4.2 编译和链接应用程序 46
2.4.3 仿真调试 48
入门篇 55
第3章 GPIO端口应用 55
3.1 I/O端口配置概述 55
3.1.1 I/O端口配置描述 55
3.1.2 I/O端口控制寄存器功能描述 58
3.2 GPIO端口概述 62
3.2.1 引脚描述 63
3.2.2 GPIO寄存器描述 63
3.3 GPIO及I/O配置常用库函数 72
3.3.1 GPIO端口库函数功能详解 72
3.3.2 引脚连接配置库函数功能详解 82
3.4 GPIO端口应用实例 88
3.4.1 设计目标 88
3.4.2 硬件电路设计 88
3.4.3 实例软件设计 89
3.5 实例总结 96
第4章 实时时钟应用 97
4.1 实时时钟(RTC)概述 97
4.1.1 RTC基本配置 98
4.1.2 RTC引脚描述 99
4.2 RTC寄存器描述 99
4.2.1 RTC中断 100
4.2.2 混合寄存器组 101
4.2.3 完整时间寄存器组 103
4.2.4 时间计数器组 104
4.2.5 通用寄存器组 106
4.2.6 报警寄存器组 106
4.3 RTC常用库函数 107
4.4 RTC应用实例 118
4.4.1 设计目标 118
4.4.2 硬件电路设计 119
4.4.3 实例软件设计 119
4.5 实例总结 124
第5章 定时器应用 125
5.1 定时器(Timer)概述 125
5.1.1 定时器的基本配置 126
5.1.2 定时器的引脚描述 127
5.2 Timer寄存器描述 127
5.2.1 中断寄存器 128
5.2.2 定时器控制寄存器 129
5.2.3 定时器/计数器 129
5.2.4 预分频寄存器 129
5.2.5 预分频计数器 129
5.2.6 匹配控制寄存器 130
5.2.7 匹配寄存器0~3 131
5.2.8 捕获寄存器0~1 131
5.2.9 捕获控制寄存器 131
5.2.10 外部匹配寄存器 132
5.2.11 计数控制寄存器 132
5.2.12 DMA操作 133
5.3 Timer常用库函数 134
5.4 Timer应用实例 142
5.4.1 设计目标 142
5.4.2 硬件电路设计 142
5.4.3 实例软件设计 143
5.5 实例总结 151
第6章 模/数转换器应用 152
6.1 模/数转换器(ADC)概述 152
6.1.1 ADC的基本配置 153
6.1.2 ADC的引脚描述 153
6.1.3 ADC的操作 153
6.2 ADC寄存器描述 154
6.2.1 ADC控制寄存器 155
6.2.2 ADC全局数据寄存器 156
6.2.3 ADC中断使能寄存器 157
6.2.4 ADC数据寄存器0~7 158
6.2.5 ADC状态寄存器 159
6.2.6 ADC调节寄存器 159
6.3 ADC常用库函数 160
6.4 ADC应用实例 165
6.4.1 设计目标 165
6.4.2 硬件电路设计 165
6.4.3 实例软件设计 166
6.5 实例总结 173
第7章 数/模转换器应用 174
7.1 数/模转换器(DAC)概述 174
7.1.1 DAC的基本配置 175
7.1.2 DAC的引脚描述 175
7.1.3 DAC的操作 175
7.2 DAC寄存器描述 176
7.2.1 D/A转换器寄存器 176
7.2.2 D/A转换器控制寄存器 177
7.2.3 D/A转换器计数器值寄存器 177
7.3 常用库函数 178
7.3.1 DAC驱动库 178
7.3.2 通用DMA控制器常用库函数 180
7.4 DAC应用实例 183
7.4.1 设计目标 183
7.4.2 硬件电路设计 184
7.4.3 实例软件设计 184
7.5 实例总结 191
第8章 脉宽调制器应用 192
8.1 脉宽调制器(PWM)概述 192
8.1.1 脉宽调制器的基本配置 194
8.1.2 脉宽调制器的引脚描述 195
8.1.3 单沿和双沿控制规则的采样波形 195
8.2 PWM寄存器描述 197
8.2.1 PWM中断寄存器 197
8.2.2 PWM定时器控制寄存器 198
8.2.3 PWM计数控制寄存器 199
8.2.4 PWM定时器/计数器 199
8.2.5 PWM预分频寄存器 200
8.2.6 PWM预分频计数器寄存器 200
8.2.7 PWM匹配控制寄存器 200
8.2.8 PWM匹配寄存器 202
8.2.9 PWM捕获控制寄存器 202
8.2.10 PWM捕获寄存器 203
8.2.11 PWM控制寄存器 203
8.2.12 PWM锁存使能寄存器 204
8.3 PWM常用库函数 205
8.4 PWM应用实例 211
8.4.1 设计目标 211
8.4.2 硬件电路设计 211
8.4.3 实例软件设计 212
8.5 实例总结 219
第9章 电机控制脉宽调制器应用 220
9.1 电机控制脉宽调制器概述 220
9.1.1 电机控制脉宽调制器的基本配置 220
9.1.2 电机控制脉宽调制器的引脚描述 222
9.2 电机控制脉宽调制器寄存器描述 222
9.2.1 MCPWM控制寄存器 223
9.2.2 MCPWM捕获控制寄存器 225
9.2.3 MCPWM中断寄存器 227
9.2.4 MCPWM计数控制寄存器 229
9.2.5 MCPWM定时器/计数器0~2寄存器 231
9.2.6 MCPWM界限0~2寄存器 231
9.2.7 MCPWM匹配0~2寄存器 232
9.2.8 MCPWM死区时间寄存器 233
9.2.9 MCPWM通信格式寄存器 234
9.2.10 MCPWM捕获寄存器 234
9.3 MCPWM的应用操作 235
9.3.1 脉宽调制 236
9.3.2 映射寄存器和同时更新 238
9.3.3 快速中止(ABORT) 238
9.3.4 捕获事件 238
9.3.5 外部事件计数(计数器模式) 238
9.3.6 三相直流模式 239
9.3.7 三相交流模式 240
9.3.8 中断源 240
9.4 MCPWM常用库函数 241
9.5 MCPWM应用实例 248
9.5.1 设计目标 248
9.5.2 硬件电路设计 248
9.5.3 实例软件设计 249
9.6 实例总结 255
第10章 通用异步收发器应用 256
10.1 通用异步收发器(UART)概述 256
10.1.1 通用异步收发器的基本配置 260
10.1.2 通用异步收发器的引脚描述 261
10.2 UART寄存器描述 262
10.2.1 UARTn接收缓冲寄存器(RBR) 263
10.2.2 UARTn发送保持寄存器(THR) 263
10.2.3 UARTn除数锁存器LSB/MSB寄存器(DLL,DLM) 264
10.2.4 UARTn中断使能寄存器(IER) 264
10.2.5 UARTn中断标识寄存器(IIR) 265
10.2.6 UARTnFIFO控制寄存器(FCR) 266
10.2.7 UARTn线控制寄存器(LCR) 267
10.2.8 UARTnModem控制寄存器(MCR) 268
10.2.9 UARTn线状态寄存器(LSR) 268
10.2.10 UARTnModem状态寄存器(MSR) 270
10.2.11 UARTn高速缓存寄存器(SCR) 271
10.2.12 UARTn自动波特率控制寄存器(ACR) 271
10.2.13 UARTn分数分频器寄存器(FDR) 271
10.2.14 UARTn发送使能寄存器(TER) 272
10.2.15 UARTn的RS-485控制寄存器(RS485CTRL) 273
10.2.16 UARTN的RS-485地址匹配寄存器(RS485ADRMATCH) 274
10.2.17 UARTn的RS-485延时值寄存器(RS485DLY) 274
10.2.18 UART4过采样寄存器(OSR) 274
10.2.19 UART4智能卡接口控制寄存器(SCICTRL) 275
10.2.20 UART4同步模式控制寄存器(SYNCCTRL) 276
10.2.21 UART4 IrDA控制寄存器(ICR) 276
10.3 UART常用库函数 277
10.4 UART应用实例 289
10.4.1 设计目标 289
10.4.2 硬件电路设计 289
10.4.3 实例软件设计 291
10.5 实例总结 298
第11章 串行同步端口控制器应用 299
11.1 串行同步端口概述 299
11.1.1 串行同步端口的基本配置 299
11.1.2 串行同步端口的引脚描述 300
11.2 SSP寄存器描述 300
11.2.1 SSPn控制寄存器0(CR0) 301
11.2.2 SSPn控制寄存器1(CR1) 301
11.2.3 SSPn数据寄存器(DR) 302
11.2.4 SSPn状态寄存器(SR) 302
11.2.5 SSPn时钟预分频寄存器(CPSR) 303
11.2.6 SSPn中断使能置位/清零寄存器(IMSC) 303
11.2.7 SSPn原始中断状态寄存器(RIS) 304
11.2.8 SSPn使能中断状态寄存器(MIS) 304
11.2.9 SSPn中断清零寄存器(ICR) 304
11.2.10 SSPn DMA控制寄存器(DMACR) 305
11.3 SSP常用库函数 305
11.4 SSP外设应用实例 312
11.4.1 设计目标 312
11.4.2 硬件电路设计 312
11.4.3 实例软件设计 315
11.5 实例总结 318
第12章 I2S数字音频接口应用 319
12.1 I2S总线接口概述 319
12.1.1 I2S总线接口的基本配置 321
12.1.2 I2S接口的引脚描述 321
12.2 I2S寄存器描述 322
12.2.1 数字音频输出寄存器(I2SDAO) 322
12.2.2 数字音频输入寄存器(I2SDAI) 323
12.2.3 发送缓冲寄存器(I2STXFIFO) 324
12.2.4 接收缓冲寄存器(I2SRXFIFO) 324
12.2.5 状态反馈寄存器(I2SSTATE) 324
12.2.6 DMA配置寄存器1(I2SDMA1) 324
12.2.7 DMA配置寄存器2(I2SDMA2) 325
12.2.8 中断请求控制寄存器(I2SIRQ) 325
12.2.9 发送时钟速率寄存器(I2STXRATE) 326
12.2.10 接收时钟速率寄存器(I2SRXRATE) 326
12.2.11 发送时钟位速率寄存器(I2STXBITRATE) 327
12.2.12 接收时钟位速率寄存器(I2SRXBITRATE) 327
12.2.13 发送模式控制寄存器(I2STXMODE) 327
12.2.14 接收模式控制寄存器(I2SRXMODE) 328
12.3 I2S常用库函数 328
12.4 I2S数字音频接口播放器应用实例 337
12.4.1 设计目标 337
12.4.2 硬件电路设计 337
12.4.3 实例软件设计 343
12.5 实例总结 351
第13章 SD卡接口应用 352
13.1 SD卡接口概述 352
13.1.1 SD卡接口的基本配置 353
13.1.2 SD卡接口的引脚描述 353
13.2 SD卡接口寄存器描述 353
13.2.1 电源控制寄存器(MCIPower) 354
13.2.2 时钟控制寄存器(MCIClock) 355
13.2.3 参数寄存器(MCIArgument) 355
13.2.4 命令寄存器(MCICommand) 356
13.2.5 命令响应寄存器(MCIRespCommand) 356
13.2.6 响应寄存器0~3(MCIResponse0~3) 357
13.2.7 数据定时器寄存器(MCIData Timer) 357
13.2.8 数据长度寄存器(MCIDataLength) 357
13.2.9 数据控制寄存器(MCIDataCtrl) 358
13.2.10 数据计数器寄存器(MCIDataCnt) 358
13.2.11 状态寄存器(MCIStatus) 359
13.2.12 清零寄存器(MCIClear) 360
13.2.13 中断屏蔽寄存器(MCIMask) 360
13.2.14 FIFO计数器寄存器(MCIFifoCnt) 361
13.2.15 数据FIFO寄存器(MCIFIFO) 361
13.3 SD卡接口的常用库函数 361
13.4 基于SD卡接口的文件系统实例 373
13.4.1 设计目标 373
13.4.2 硬件电路设计 373
13.4.3 实例软件设计 374
13.5 实例总结 400
第14章 LCD控制器与触摸应用 401
14.1 LCD控制器概述 401
14.1.1 LCD上电与掉电时序 403
14.1.2 LCD控制器的基本配置 404
14.1.3 LCD控制器的引脚描述 404
14.2 LCD控制器寄存器描述 404
14.2.1 LCD配置和计时控制寄存器(LCD_CFG) 405
14.2.2 水平时序控制寄存器(LCD_TIMH) 405
14.2.3 垂直时序控制寄存器(LCD_TIMV) 406
14.2.4 时钟与信号极性控制寄存器(LCD_POL) 407
14.2.5 线端控制寄存器(LCD_LE) 408
14.2.6 上面板帧基址寄存器(LCD_UPBASE) 409
14.2.7 下面板帧基址寄存器(LCD_LPBASE) 409
14.2.8 LCD控制寄存器(LCD_CTRL) 409
14.2.9 中断屏蔽寄存器(LCD_INTMSK) 411
14.2.10 原始中断屏蔽寄存器(LCD_INTRAW) 411
14.2.11 中断屏蔽状态寄存器(LCD_INTSTAT) 412
14.2.12 中断清零寄存器(LCD_INTCLR) 412
14.2.13 上面板当前地址寄存器(LCD_UPCURR) 413
14.2.14 下面板当前地址寄存器(LCD_LPCURR) 413
14.2.15 彩色调色板寄存器(LCD_PAL) 413
14.2.16 光标图像寄存器(CRSR_IMG) 414
14.2.17 光标控制寄存器(CRSR_CTRL) 414
14.2.18 光标配置寄存器(CRSR_CFG) 415
14.2.19 光标调色板寄存器0(CRSR_PAL0) 415
14.2.20 光标调色板寄存器1(CRSR_PAL1) 416
14.2.21 光标XY位置寄存器 (CRSR_XY) 416
14.2.22 光标剪裁位置寄存器(CRSR_CLIP) 416
14.2.23 光标中断屏蔽寄存器(CRSR_INTMSK) 417
14.2.24 光标中断清零寄存器(CRSR_INTCLR) 417
14.2.25 光标原始中断状态寄存器(CRSR_INTRAW) 417
14.2.26 光标中断屏蔽状态寄存器(CRSR_INTSTAT) 418
14.3 LCD控制器的常用库函数 418
14.4 LCD控制器应用实例 422
14.4.1 设计目标 422
14.4.2 硬件电路设计 422
14.4.3 文字显示实例软件设计 427
14.4.4 触摸屏校准实例软件设计 435
14.5 实例总结 440
第15章 以太网接口应用 441
15.1 以太网接口概述 441
15.1.1 以太网模块的内部结构与特性 441
15.1.2 以太网数据包 443
15.1.3 以太网接口的基本配置 444
15.1.4 以太网接口的引脚描述 445
15.2 以太网接口的寄存器描述 446
15.2.1 MAC寄存器组 447
15.2.2 控制寄存器组 454
15.2.3 接收过滤寄存器组 461
15.2.4 模块控制寄存器组 463
15.2.5 描述符与状态 465
15.3 以太网接口的常用库函数 471
15.4 以太网接口应用实例 479
15.4.1 设计目标 480
15.4.2 硬件电路设计 480
15.4.3 简易网页浏览实例软件设计 492
15.4.4 μIP实例软件设计 505
15.5 实例总结 523
进阶篇 527
第16章 嵌入式实时操作系统μC/OS-Ⅱ的移植与应用 527
16.1 嵌入式系统μC/OS-Ⅱ概述 527
16.1.1 μC/OS-Ⅱ系统特点 527
16.1.2 μC/OS-Ⅱ系统内核 529
16.1.3 任务管理 538
16.1.4 时间管理 540
16.1.5 任务之间的通信与同步 540
16.1.6 内存管理 542
16.2 如何在LPC1788微处理器上移植μC/OS-Ⅱ系统 543
16.2.1 移植μC/OS-Ⅱ系统必须满足的条件 543
16.2.2 初识μC/OS-Ⅱ嵌入式系统 544
16.2.3 重提μC/OS-Ⅱ嵌入式系统移植要点 559
16.3 应用实例 560
16.3.1 设计目标 560
16.3.2 硬件电路设计 560
16.3.3 μC/OS-Ⅱ系统软件设计 560
16.4 实例总结 564
第17章 LwIP移植与应用实例 565
17.1 以太网概述 565
17.1.1 以太网的网络传输介质 565
17.1.2 以太网数据帧格式 568
17.1.3 嵌入式系统的以太网协议 570
17.2 LwIP协议栈概述 572
17.2.1 LwIP协议栈的整体架构和进程模型 572
17.2.2 LwIP协议栈的API接口 573
17.2.3 LwIP内存管理 591
17.3 LwIP协议栈基于μC/OS-Ⅱ系统的移植 592
17.3.1 LwIP协议栈的源文件结构 593
17.3.2 LwIP协议栈的移植 593
17.4 应用实例 607
17.4.1 设计目标 607
17.4.2 系统软件设计 607
17.5 实例总结 613
第18章 嵌入式实时操作系统FreeRTOS应用 614
18.1 嵌入式系统FreeRTOS概述 614
18.1.1 FreeRTOS系统的特点 614
18.1.2 FreeRTOS系统的任务管理 615
18.1.3 FreeRTOS系统的队列管理 626
18.1.4 FreeRTOS系统的信号量 629
18.1.5 FreeRTOS系统的资源管理 633
18.1.6 FreeRTOS系统的内存管理 635
18.1.7 联合程序 638
18.2 如何在LPC1788微控制器上移植FreeRTOS系统 644
18.2.1 初识FreeRTOS嵌入式系统 645
18.2.2 FreeRTOS系统的移植 646
18.2.3 FreeRTOS系统的可配置参数项 654
18.3 FreeRTOS应用实例 657
18.4 实例总结 660
第19章 嵌入式图形系统μC/GUI的移植与应用 661
19.1 嵌入式图形系统μC/GUI 661
19.1.1 μC/GUI系统的软件结构 661
19.1.2 文本显示 662
19.1.3 数值显示 664
19.1.4 2D图形库 666
19.1.5 字体 671
19.1.6 颜色 672
19.1.7 存储设备 674
19.1.8 视窗管理器 674
19.1.9 窗口对象 676
19.1.10 对话框 687
19.1.11 抗锯齿 688
19.1.12 输入设备 690
19.1.13 时间函数 692
19.2 μC/GUI系统的移植 692
19.2.1 初识μC/GUI系统 692
19.2.2 细说μC/GUI系统的移植 701
19.2.3 μC/GUI系统的触摸屏驱动 704
19.2.4 μC/OS-Ⅱ系统环境下支持μC/GUI系统 705
19.3 设计目标 708
19.4 系统软件设计 708
19.5 实例总结 719
第20章 嵌入式实时操作系统μC/OS-Ⅲ的移植与应用 720
20.1 嵌入式系统μC/OS-Ⅲ概述 720
20.1.1 μC/OS-Ⅲ系统的特点 720
20.1.2 代码的临界段 725
20.1.3 任务管理 726
20.1.4 任务就绪表 740
20.1.5 任务调度 742
20.1.6 上下文切换 748
20.1.7 时间管理 749
20.1.8 资源管理 750
20.1.9 信号量 754
20.1.10 事件标志组 765
20.1.11 消息传递 772
20.1.12 内存管理 782
20.2 如何在LPC1788处理器上移植μC/OS-Ⅲ系统 784
20.2.1 移植μC/OS-Ⅲ系统必须满足的条件 784
20.2.2 初识μC/OS-Ⅲ嵌入式系统 785
20.3 设计目标 808
20.4 μC/OS-Ⅲ系统软件设计 808
20.5 实例总结 814
参考文献 815