第1章 微控制器开发基础 1
1.1 微控制器的发展与趋势 2
1.2 ARM Cortex-M微控制器内核 6
1.2.1 ARM与Cortex处理器的发展 6
1.2.2 Cortex-M家族成员 7
1.2.3 Cortex-M内核技术特点与优势 10
1.3 CMSIS微控制器外设库 14
1.4 Cortex-M集成开发环境和调试工具 18
1.4.1 集成开发环境 18
1.4.2 调试工具 19
1.5 恩智浦LPC5411X系列低功耗通用微控制器 21
1.5.1 家族成员与功能概要 21
1.5.2 系统框图与内存映射 23
1.5.3 评估板与扩展板介绍 24
1.6 小结 25
第2章 MCUXpresso软件与工具开发套件 27
2.1 MCUXpresso IDE集成开发环境 28
2.1.1 MCUXpresso IDE的主要特性 29
2.1.2 安装MCUXpresso IDE 29
2.1.3 初识MCUXpresso IDE 31
2.2 MCUXpresso Config Tools配置工具 33
2.2.1 SDK生成器工具 33
2.2.2 Pins Tool引脚分配工具 36
2.2.3 Clocks Tool时钟配置工具 37
2.3 MCUXpresso SDK软件开发套件 38
2.3.1 架构分析 38
2.3.2 文件目录 40
2.3.3 外设驱动命名与依赖 41
2.3.4 外设驱动API 43
2.4 实例:Hello world 52
2.5 小结 58
第3章 微控制器的启动过程 59
3.1 上电启动后硬件自动执行的操作序列 61
3.2 从复位中断向量进入C程序的世界 62
3.2.1 复位中断函数概述 62
3.2.2 详解LPC54114的启动代码 64
3.3 LPC54114的BootLoader 75
3.3.1 BootLoader概述 75
3.3.2 BootLoader在LPC54114上的应用 76
3.4 小结 81
第4章 时钟子系统与管理 83
4.1 LPC54114的片上时钟系统 84
4.1.1 时钟源 85
4.1.2 上电后默认情况下的时钟系统 86
4.1.3 使用PLL获取更高频率的时钟信号 87
4.2 MCUXpresso SDK时钟管理API 90
4.2.1 常用时钟管理API 90
4.2.2 MCUXpresso SDK应用程序中配置时钟的典型框架 94
4.3 MCUXpresso时钟配置工具Clocks Tool简介 95
4.3.1 概述 95
4.3.2 在Clocks Tool中创建LPC54114Xpresso板配置工程 97
4.4 实例:使用PLL倍频输出产生系统时钟 102
4.5 小结 106
第5章 IO子系统与中断 107
5.1 IO子系统的相关硬件模块 108
5.1.1 IOCON IO引脚配置模块 108
5.1.2 GPIO通用输入/输出模块 109
5.1.3 PINT引脚中断模块 110
5.1.4 INPUT MUX输入复用器 110
5.2 MCUXpresso SDK中的GPIO与PINT驱动 111
5.2.1 GPIO驱动API 112
5.2.2 PINT驱动 API 113
5.3 MCUXpresso时钟配置工具Pins Tool应用 116
5.3.1 概述 116
5.3.2 在MCUXpresso SDK工程中用Pins Tool分配引脚功能 117
5.4 实例:通过按键控制LED 121
5.5 小结 125
第6章 DMA原理与应用 127
6.1 DMA控制器概述 128
6.2 DMA特性和内部框图 128
6.2.1 LPC5411x DMA特性 128
6.2.2 DMA内部框图 129
6.3 DMA外部引脚描述 130
6.4 DMA的几个概念和功能说明 131
6.4.1 DMA的工作原理 131
6.4.2 DMA请求和触发 131
6.4.3 DMA传输描述符 134
6.4.4 DMA传输模式 136
6.4.5 DMA低功耗模式 139
6.5 DMA模块的SDK驱动介绍 140
6.6 实例:从DMA Memory到Memory的数据传输 144
6.6.1 环境准备 145
6.6.2 代码分析 145
6.6.3 实验现象 148
6.7 小结 149
第7章 ADC数模转换器原理与应用 151
7.1 逐次逼近型ADC工作原理和过程 153
7.2 ADC数模转换器常用性能指标 154
7.3 ADC特性和内部框图 155
7.3.1 ADC特性 155
7.3.2 ADC内部框图 156
7.4 ADC外部引脚描述 156
7.5 ADC功能说明 157
7.5.1 ADC时钟 157
7.5.2 转换序列 158
7.5.3 触发转换 159
7.5.4 转换模式 159
7.5.5 转换输出 160
7.5.6 偏移误差校准 161
7.6 ADC模块的SDK驱动介绍 161
7.7 实例:使用ADC测量内部温度 164
7.7.1 环境准备 164
7.7.2 代码分析 165
7.7.3 现象描述 170
7.8 小结 171
第8章 USART异步串行通信接口原理与应用 173
8.1 USART控制器概述 174
8.2 USART模块特性和内部框图 175
8.2.1 LPC5411x USART特性 175
8.2.2 LPC5411x USART内部框图 176
8.3 Flexcomm接口概述 176
8.3.1 Flexcomm功能说明 177
8.3.2 Flexcomm内部框图 177
8.4 USART外部引脚描述 178
8.4.1 USART模块引脚功能定义 178
8.4.2 USART引脚配置说明 179
8.5 USART基本功能说明 179
8.5.1 USART模块初始化 180
8.5.2 USART的时钟源与波特率配置 180
8.5.3 收发控制 182
8.5.4 低功耗模式下USART的唤醒 182
8.6 USART模块的SDK驱动介绍 183
8.7 USART数据收发 189
8.7.1 环境准备 190
8.7.2 代码分析 191
8.7.3 现象描述 195
8.8 小结 195
第9章 SPI同步串行通信接口原理与应用 197
9.1 SPI控制器概述 198
9.2 SPI特性和内部框图 198
9.2.1 LPC5411x SPI特性 198
9.2.2 SPI内部框图 199
9.3 SPI外部引脚描述 200
9.4 SPI功能说明 201
9.4.1 SPI工作模式 201
9.4.2 SPI时钟源和数据传输速率 203
9.4.3 超出16位的数据传输 204
9.4.4 低功耗模式下SPI唤醒 205
9.4.5 SPI数据帧延迟 205
9.5 SPI模块的SDK驱动介绍 208
9.6 实例:SPI读/写外部Flash 214
9.6.1 实验目的和环境准备 215
9.6.2 代码分析 216
9.6.3 实验现象 224
9.7 小结 225
第10章 I2C总线接口与应用 227
10.1 I2C控制器概述 228
10.2 I2C特性和内部框图 229
10.2.1 LPC5411x I2C特性 229
10.2.2 I2C内部框图 229
10.3 I2C外部引脚描述 230
10.4 I2C功能说明 232
10.4.1 I2C协议简介 232
10.4.2 I2C总线速率和时钟延伸 233
10.4.3 I2C的寻址方式和低功耗唤醒 235
10.4.4 I2C的死锁和超时机制 238
10.5 I2C模块的SDK驱动 241
10.6 实例:I2C中断方式实现数据收发 249
10.6.1 实验目的和硬件电路设计 249
10.6.2 实例软件设计 250
10.6.3 main文件 251
10.6.4 现象描述 255
10.7 小结 255
第11章 I2S总线协议与应用 257
11.1 I2S总线协议简介 258
11.2 I2S特性和内部框图 260
11.2.1 I2S特性 260
11.2.2 I2S内部框图 261
11.3 I2S外部引脚描述 262
11.4 I2S功能说明 262
11.4.1 I2S时钟 263
11.4.2 数据速率 263
11.4.3 数据帧格式和模式 264
11.4.4 FIFO缓冲区的使用方法 266
11.5 I2S模块的SDK驱动介绍 267
11.6 实例:使用I2S中断方式传输播放音频 271
11.6.1 环境准备 271
11.6.2 代码分析 272
11.6.3 现象描述 276
11.7 小结 277
第12章 FlashIAP在应用编程模块的应用 279
12.1 IAP在应用编程的通用基础知识 280
12.2 IAP命令执行详解 280
12.3 IAP模块的SDK驱动介绍 283
12.4 使用LAP驱动读/写内部Flash 284
12.4.1 环境准备 284
12.4.2 代码分析 284
12.4.3 现象描述 287
12.5 小结 287
第13章 FreeRTOS实时多任务操作系统原理与应用 289
13.1 嵌入式操作系统概述 290
13.1.1 裸跑与使用操作系统的对比 290
13.1.2 嵌入式操作系统基本概念 291
13.2 FreeRTOS实时多任务操作系统介绍 294
13.2.1 FreeRTOS实时多任务操作系统特色 294
13.2.2 FreeRTOS基本功能解读 295
13.2.3 FreeRTOS的软件授权 298
13.3 FreeRTOS的底层结构与ARM平台的移植 298
13.3.1 FreeRTOS源码结构分析 299
13.3.2 内核配置头文件 301
13.3.3 移植宏定义文件 302
13.3.4 ARM平台的移植实现 304
13.3.5 tick定时器——fsl_tickless相关内容说明 308
13.3.6 portasm.s汇编 310
13.4 MCUXpresso SDK中基于FreeRTOS的外设驱动 310
13.4.1 具有操作系统功能的驱动介绍 310
13.4.2 FreeRTOS下的USART发送与接收 312
13.5 LPC5411x SDK中的FreeRTOS例程分析 315
13.5.1 环境准备 315
13.5.2 Main函数分析 315
13.5.3 FreeRTOS的多任务代码分析 317
13.5.4 操作系统环境的调试与实验说明 320
13.6 小结 321
第14章 异构双核处理器框架与应用 323
14.1 多处理器计算 324
14.2 异构双核 325
14.2.1 双核总线架构 325
14.2.2 内核管理 326
14.2.3 内核间通信 327
14.2.4 双核程序布局 327
14.3 双核应用分析 329
14.3.1 基于双核的安全启动 329
14.3.2 运用双核进行显示后处理 330
14.4 多处理器系统服务框架 331
14.4.1 多核管理模块(mcmgr) 331
14.4.2 轻型远端处理器通信框架(RPMsg-Lite) 335
14.4.3 嵌入式远程过程调用(eRPC) 337
14.5 双核应用开发 339
14.5.1 工程配置 339
14.5.2 预定义宏 340
14.5.3 双核启动 341
14.6 实例:双核远程过程调用 346
14.6.1 环境准备 346
14.6.2 代码分析 347
14.6.3 实验结果 350
14.7 小结 351
第15章 微控制器低功耗设计 353
15.1 系统能耗分析 355
15.1.1 动态功耗分析 356
15.1.2 动态功耗指标 357
15.1.3 静态功耗分析 360
15.1.4 静态功耗指标 362
15.1.5 休眠和唤醒 363
15.1.6 系统能耗估算 363
15.2 微控制器低功耗特性 365
15.2.1 系统模块电压调节 365
15.2.2 数字外设时钟控制 366
15.3 微控制器低功耗应用设计方法 366
15.3.1 硬件设计 366
15.3.2 软件设计 367
15.4 MCUXPRESSO SDK功耗管理库 374
15.5 小结 377
第16章 基于LPC54114和SDK的可穿戴设备原型设计 379
16.1 硬件介绍 380
16.1.1 硬件框图 381
16.1.2 主要元器件 381
16.2 固件与应用设计 383
16.2.1 软件架构 383
16.2.2 主流程 384
16.2.3 传感器模块 387
16.2.4 人机交互模块 391
16.2.5 用户输入模块 400
16.3 功能演示 402
16.4 小结 404
参考文献 405