第1章 概述 1
1.1嵌入式系统定义、由来及特点 1
1.1.1嵌入式系统的定义 1
1.1.2嵌入式系统的由来及其与微控制器的关系 2
1.1.3嵌入式系统的特点 4
1.2嵌入式系统的知识体系、学习误区及学习建议 5
1.2.1嵌入式系统的知识体系 5
1.2.2嵌入式系统的学习误区 6
1.2.3基础阶段的学习建议 9
1.3嵌入式系统常用术语 10
1.3.1与硬件相关的术语 10
1.3.2与通信相关的术语 11
1.3.3与功能模块及软件相关的术语 12
1.4嵌入式系统常用的C语言基本语法概要 13
1.5本章小结 24
习题1 24
第2章 ARM Cortex-M0+处理器 25
2.1 ARM处理器应用概述 25
2.2 ARM Cortex-M0+处理器简介 26
2.2.1 ARM Cortex-M0+处理器特点与结构图 26
2.2.2 ARM Cortex-M0+处理器存储器映像 28
2.2.3 ARM Cortex-M0+处理器的寄存器 29
2.3 ARM Cortex-M0+处理器的指令系统 31
2.3.1 ARM Cortex-M0+指令简表与寻址方式 32
2.3.2数据传送类指令 33
2.3.3数据操作类指令 36
2.3.4跳转控制类指令 39
2.3.5其他指令 40
2.4 ARM Cortex-M0+汇编语言的基本语法 41
2.4.1汇编语言格式 41
2.4.2伪指令 43
2.5本章小结 46
习题2 46
第3章 KL25简介与硬件最小系统 48
3.1飞思卡尔Kinetis系列微控制器简介 48
3.2 KL系列MCU概述与体系结构 49
3.2.1 KL系列MCU概述 49
3.2.2 KL系列MCU体系结构 51
3.3 KL25系列存储映像 53
3.4 KL25的引脚功能 54
3.5 KL25硬件最小系统原理图 57
3.6实践硬件:SD-FSL-KL25-EVB 58
3.6.1 SD-FSL-KL25-EVB硬件系统简介 58
3.6.2硬件系统的测试 59
3.7本章小结 60
习题3 61
第4章 第一个样例程序及工程组织 62
4.1通用I/O接口基本概念及连接方法 62
4.2端口控制模块与GPIO模块的编程结构 63
4.2.1端口控制模块 64
4.2.2 GPIO模块 67
4.2.3 GPIO基本编程步骤与举例 68
4.3 GPIO驱动构件封装方法与驱动构件封装规范 69
4.3.1制作GPIO驱动构件的必要性及GPIO驱动构件封装要点分析 69
4.3.2底层驱动构件封装规范概要与构件封装的前期准备 71
4.3.3 KL25的GPIO驱动构件及解析 72
4.4第一个C语言工程:控制小灯闪烁 77
4.4.1Light构件设计与测试工程主程序 77
4.4.2 Codewarrior开发环境简介及简明操作 81
4.5工程文件组织框架与第一个C语言工程分析 83
4.5.1 CW10.3开发环境下工程文件组织框架 84
4.5.2链接文件 85
4.5.3机器码文件 86
4.5.4其他相关文件功能简介 88
4.5.5芯片内电启动执行过程 89
4.6第一个汇编语言工程:控制小灯闪烁 91
4.6.1汇编工程文件的组织 91
4.6.2 Light构件汇编程序light.s 92
4.6.3 Light测试工程主程序及汇编工程执行过程 93
4.7本章小结 95
习题4 96
第5章 构件化开发方法与底层驱动构件封装规范 97
5.1嵌入式硬件构件与底层软件构件 97
5.1.1嵌入式硬件构件的概念 97
5.1.2嵌入式底层驱动构件的概念 98
5.2基于硬件构件的嵌入式系统硬件电路设计 99
5.2.1设计时需要考虑的基本问题 99
5.2.2硬件构件化电路原理图绘制的简明规则 100
5.2.3实验PCB设计的简明规则 104
5.3基于硬件构件的嵌入式底层软件构件的编程方法 107
5.3.1嵌入式硬件构件和软件构件的层次模型 107
5.3.2底层构件的实现方法与编程思想 108
5.3.3硬件构件及底层软件构件的重用与移植方法 109
5.4底层驱动构件封装规范 112
5.4.1构件设计的基本原则 112
5.4.2编码风格基本规范 113
5.4.3公共要素文件 117
5.4.4头文件的设计规范 120
5.4.5源文件的设计规范 121
5.5本章小结 122
习题5 123
第6章 串行通信模块及第一个中断程序结构 124
6.1异步串行通信的通用基础知识 124
6.1.1串行通信的基本概念 124
6.1.2 RS-232总线标准 126
6.1.3 TTL电平到RS-232电平转换电路 127
6.1.4串行通信编程模型 128
6.2 UART模块功能概述及编程结构 129
6.2.1 UART模块功能概述 129
6.2.2 UART模块编程结构 130
6.3 UART驱动构件封装 135
6.3.1 UART驱动构件封装要点分析 135
6.3.2 UART驱动构件头文件及源程序 136
6.4 KL25的中断机制及UART接收中断程序实例 145
6.4.1 KL25中断基本概念 145
6.4.2 KL25中断向量表文件 146
6.4.3 KL25的中断服务程序及其“注册” 148
6.4.4 ARM Cortex-M0+非内核模块中断编程结构 149
6.4.5 UART接收中断程序实例 152
6.5进一步讨论 154
6.6本章小结 154
习题6 155
第7章 定时器相关模块 156
7.1计数器/定时器的工作原理 156
7.2 ARM Cortex-M0+内核时钟 157
7.2.1 SysTick模块的编程结构 157
7.2.2 SysTick构件设计及测试工程 158
7.3定时器/PWM模块功能概述及编程结构 160
7.3.1 TPM模块功能概述 160
7.3.2 TPM模块概要与编程要点 164
7.3.3 TPM构件设计及测试工程 169
7.3.4 PWM构件设计及测试工程 172
7.3.5定时器模块的输入捕捉功能 174
7.3.6定时器模块的输出比较功能 177
7.4周期性中断定时器 180
7.4.1 PIT模块功能概述 180
7.4.2 PIT模块概要与编程要点 181
7.4.3 PIT构件设计及测试实例 183
7.5低功耗定时器 185
7.5.1 LPTMR模块功能概述 185
7.5.2 LPTMR模块编程结构 186
7.5.3 LPTMR构件设计及测试实例 188
7.6实时时钟模块 189
7.6.1 RTC模块功能概述 189
7.6.2 RTC模块概要与编程要点 191
7.6.3 RTC构件设计及测试工程 195
7.7本章小结 198
习题7 199
第8章 GPIO应用——键盘、LED与LCD 200
8.1键盘模块概论与驱动构件设计 200
8.1.1键盘模型及接口 200
8.1.2键盘编程的基本问题及键盘扫描编程原理 201
8.1.3键盘构件设计 202
8.2 LED模块概论与驱动构件设计 208
8.2.1 LED基础知识 208
8.2.2 LED构件设计 209
8.3 LCD模块概论与驱动构件设计 213
8.3.1 LCD的特点和分类 214
8.3.2点阵字符型液晶显示模块 215
8.3.3 HD44780 215
8.3.4 LCD构件设计 220
8.4 LED、 LCD键盘驱动构件测试实例 224
8.5本章小结 227
习题8 227
第9章 Flash在线编程 229
9.1 Flash通用基础知识 229
9.2 KL25芯片Flash模块特点及编程结构 230
9.3 Flash在线编程构件设计与测试 234
9.3.1 Flash存储器在线编程基本方法 234
9.3.2 Flash驱动构件封装要点分析 237
9.3.3 Flash驱动构件头文件及源程序 238
9.3.4 Flash驱动构件测试工程主函数 242
9.4 Flash模块的保护与加密 244
9.5本章小结 248
第10章 ADC、DAC与CMP模块 250
10.1 A/D转换通用知识 250
10.1.1 A/D转换的基本问题 250
10.1.2 A/D转换器类型 251
10.1.3 A/D转换常用传感器简介 251
10.1.4电阻型传感器采样电路设计 252
10.2 KL25的16位ADC模块功能概述 254
10.3 KL25的A/D转换模块寄存器 255
10.4 A/D模块基本编程方法与驱动构件封装 261
10.4.1基本编程方法 261
10.4.2 ADC驱动构件封装 261
10.5 12位DAC模块功能概述 266
10.6 12位DAC模块寄存器 267
10.7 DAC模块基本编程方法与驱动构件封装 269
10.8 CMP模块功能概述 272
10.8.1 CMP基础知识 272
10.8.2 CMP模块的工作原理 272
10.9 CMP模块寄存器 275
10.10 CMP模块基本编程方法与驱动构件封装 278
10.11本章小结 283
习题10 284
第11章 SPI、 I2C与TSI模块 285
11.1串行外设接口SPI 285
11.1.1串行外设接口SPI的基础知识 285
11.1.2 KL25的SPI模块概述 289
11.1.3 SPI模块寄存器 290
11.1.4 SPI驱动构件封装 293
11.2 I2C模块 299
11.2.1 I2C总线的基础知识 299
11.2.2 KL25的I2C模块概要与编程要点 304
11.2.3 I2C寄存器 305
11.2.4 I2C驱动构件封装 309
11.3触摸感应接口TSI模块 318
11.3.1触摸感应接口TSI基础知识 318
11.3.2 KL25的TSI的基本工作原理 320
11.3.3存储器映射和寄存器定义 322
11.3.4 TSI驱动构件封装 324
11.4本章小结 328
习题11 329
第12章 USB 2.0编程 330
12.1 USB基本概念及硬件特性 330
12.1.1 USB概述 330
12.1.2 USB相关基本概念 332
12.1.3 USB的物理特性 338
12.2 USB的通信协议 339
12.2.1 USB基本通信单元:包 339
12.2.2 USB通信中的事务处理 342
12.2.3从设备的枚举看USB数据传输 343
12.3 KL25的USB模块概述 347
12.3.1 KL25的USB模块功能简介 347
12.3.2 KL25的USB模块主要寄存器介绍 349
12.4 KL25作为USB从机的开发方法 353
12.4.1 KL25作为USB从机的构件化设计 353
12.4.2 KL25的USB模块测试实例 359
12.5 PC方USB设备驱动程序的设计 362
12.5.1 USB设备驱动的基本原理 362
12.5.2 PC作为USB主机的程序设计 365
12.6 KL25作为USB主机的开发方法 366
12.6.1 KL25作为USB主机的基本功能 366
12.6.2 USB主机与CDC类USB设备通信 368
12.6.3 USB主机与MassStorage类USB设备通信 368
12.7本章小结 369
习题12 370
第13章 系统时钟与其他功能模块 371
13.1时钟系统 371
13.1.1时钟系统概述 371
13.1.2时钟模块概要与编程要点 373
13.1.3时钟模块测试实例 375
13.2电源模块 377
13.2.1电源模式控制 377
13.2.2电源模式转换 379
13.3低漏唤醒单元 379
13.4位带操作 380
13.5看门狗 380
13.6复位模块 382
13.6.1上电复位 382
13.6.2系统复位源 382
13.6.3调试复位 384
13.7本章小结 384
习题13 384
第14章 进一步学习指导 386
14.1关于更为详细的技术资料 386
14.2关于实时操作系统RTOS 386
14.3关于嵌入式系统稳定性问题 387
附录A MKL25Z128VLK4引脚功能分配 390
附录B KL25硬件最小系统原理图 393
参考文献 397