第1章 嵌入式系统概述 1
1.1 嵌入式系统 2
1.1.1 嵌入式系统定义 2
1.1.2 嵌入式系统特点 3
1.1.3 嵌入式系统应用 4
1.2 嵌入式系统组成结构 5
1.2.1 嵌入式系统硬件平台 5
1.2.2 嵌入式系统软件结构 8
1.3 嵌入式系统开发基本流程 9
1.4 嵌入式系统发展趋势 11
1.5 学习嵌入式系统的建议 12
本章小结 13
思考与练习 13
第2章 ARM体系结构 14
2.1 ARM简介 15
2.1.1 ARM公司简介 15
2.1.2 ARM体系结构的发展 16
2.1.3 ARM处理器系列简介 18
2.2 ARM7编程模型 21
2.2.1 ARM7TDMI功能图 21
2.2.2 ARM处理器工作状态 22
2.2.3 ARM处理器工作模式 23
2.2.4 ARM内部寄存器 23
2.2.5 指令长度及数据类型 28
2.2.6 存储器格式 28
2.2.7 3级流水线 29
2.2.8 异常处理 30
本章小结 34
思考与练习 34
第3章 ARM7TDMI(-S)指令系统 36
3.1 ARM处理器寻址方式 37
3.2 ARM处理器指令概述 40
3.2.1 ARM指令的特点 40
3.2.2 ARM指令集分类 40
3.2.3 指令格式与条件码 40
3.3 ARM指令集 42
3.3.1 加载/存储指令 42
3.3.2 数据处理指令 46
3.3.3 乘法/乘加指令 53
3.3.4 跳转指令 55
3.3.5 程序状态寄存器访问指令 58
3.3.6 协处理器指令 60
3.3.7 异常中断指令 61
本章小结 64
思考与练习 64
第4章 基于ARM的嵌入式软件设计 65
4.1 嵌入式系统程序设计方法 66
4.1.1 嵌入式软件特点 66
4.1.2 嵌入式软件设计流程 67
4.2 ARM汇编语言伪指令 68
4.2.1 指导性伪指令 68
4.2.2 数据定义伪指令 71
4.2.3 输出报告型伪指令 76
4.2.4 符号定义伪指令 76
4.2.5 汇编语言控制伪指令 82
4.2.6 与ARM汇编语言组合的伪指令 87
4.3 ARM汇编语言程序设计 90
4.3.1 ARM汇编语言规范 90
4.3.2 ARM汇编语言程序结构 92
4.3.3 ARM汇编程序设计实例 93
4.4 ARM C语言程序设计 94
4.4.1 预处理伪指令 94
4.4.2 函数及函数库 97
4.4.3 ARM C语言程序设计实例 98
4.5 ARM C语言与汇编语言混合编程 99
4.6 ARM程序结构分析 104
本章小结 104
思考与练习 105
第5章 嵌入式系统常用开发工具 106
5.1 ARM开发工具ADS1.2 107
5.1.1 ADS1.2集成开发环境的组成 107
5.1.2 工程的创建、编译和链接 110
5.1.3 使用AXD调试代码 116
5.2 ARM开发工具RealView MDK 118
5.2.1 RealView MDK简介 118
5.2.2 RealView MDK软件的特点 118
5.2.3 ULINK2仿真器简介 119
5.2.4 工程的创建、编译和链接 120
5.2.5 工程的调试 131
5.2.6 映像文件下载 132
5.3 ARM仿真设计软件PROTEUS 132
5.3.1 ISIS编辑环境 133
5.3.2 PROTEUS设计与仿真流程 135
5.3.3 PROTEUS设计与仿真实例 136
本章小结 145
思考与练习 145
第6章 基于LPC2000系列的嵌入式应用开发实例 146
6.1 LPC2000系列处理器简介 147
6.1.1 LPC2000系列处理器特性 147
6.1.2 LPC2000系列处理器结构 147
6.1.3 LPC2000系列处理器引脚配置 149
6.2 存储器管理 153
6.2.1 片内存储器 153
6.2.2 片外存储器 153
6.2.3 存储器映射 154
6.2.4 存储器重映射及引导块 155
6.2.5 系统启动代码分析 156
6.3 GPIO端口功能及应用 157
6.3.1 引脚连接模块寄存器 158
6.3.2 GPIO寄存器描述 160
6.3.3 应用实例 162
6.4 中断控制功能及应用 170
6.4.1 向量中断控制器概述 171
6.4.2 VIC寄存器描述 172
6.4.3 VIC基本使用方法 176
6.4.4 外部中断 177
6.4.5 外部中断寄存器描述 178
6.4.6 应用实例 179
6.5 定时器功能及应用 184
6.5.1 定时器概述 184
6.5.2 寄存器描述 185
6.5.3 应用实例 189
6.6 UART串口通信功能及应用 193
6.6.1 UART0结构 193
6.6.2 UART0寄存器描述 195
6.6.3 UART0基本操作 199
6.6.4 应用实例 201
6.7 RTC功能及应用 204
6.7.1 RTC概述 204
6.7.2 RTC寄存器描述 205
6.7.3 RTC基本操作 208
6.7.4 应用实例 209
6.8 A/D转换器功能及应用 216
6.8.1 A/D转换器概述 216
6.8.2 A/D寄存器描述 216
6.8.3 A/D基本操作 218
6.8.4 应用实例 219
6.9 I2C接口功能及应用 223
6.9.1 I2C接口描述 223
6.9.2 I2C寄存器描述 224
6.9.3 I2C操作模式 227
6.9.4 应用实例 233
6.10 SPI接口功能及应用 235
6.10.1 SPI接口描述 236
6.10.2 SPI寄存器描述 237
6.10.3 SPI操作模式 240
6.10.4 应用实例 243
6.11 PWM功能及应用 246
6.11.1 PWM概述 246
6.11.2 PWM寄存器描述 248
6.11.3 PWM基本操作 253
6.11.4 应用实例 254
本章小结 256
思考与练习 256
第7章 嵌入式实时操作系统μC/OS-Ⅱ基础 257
7.1 嵌入式操作系统概述 258
7.1.1 嵌入式操作系统 258
7.1.2 典型的嵌入式操作系统 258
7.2 嵌入式实时操作系统μC/OS-Ⅱ 260
7.2.1 μC/OS-Ⅱ概述 260
7.2.2 μC/OS-Ⅱ特点 261
7.2.3 μC/OS-Ⅱ软件体系结构 261
7.2.4 μC/OS-Ⅱ文件结构 263
7.3 μC/OS-Ⅱ内核结构 264
7.3.1 临界段的处理 264
7.3.2 任务和任务状态 265
7.3.3 任务控制块 268
7.3.4 任务调度 268
7.3.5 中断服务 269
7.3.6 时钟节拍与时间管理 270
7.3.7 μC/OS-Ⅱ的初始化 271
7.3.8 μC/OS-Ⅱ的启动 272
本章小结 272
思考与练习 272
第8章 μC/OS-Ⅱ在ARM7上的移植 273
8.1 移植规划 274
8.1.1 编译器选择 274
8.1.2 ARM7工作模式选择 274
8.1.3 支持的指令集 274
8.2 移植μC/OS-Ⅱ 274
8.2.1 编写OS_CPU.H 274
8.2.2 编写OS_CPU_C.C 276
8.2.3 编写OS_CPU_A.S 280
8.2.4 关于中断及时钟节拍 283
8.3 应用实例——移植μC/OS-Ⅱ到LPC2000 285
8.3.1 编写启动代码 285
8.3.2 挂接SWI软件中断 285
8.3.3 中断及时钟节拍中断 286
8.3.4 编写应用程序 286
本章小结 288
思考与练习 289
第9章 综合实例——超声波测距仪设计 290
9.1 项目功能描述 291
9.1.1 实现功能 291
9.1.2 主要性能指标 291
9.2 总体设计 291
9.2.1 超声波测距原理 291
9.2.2 超声波速度的确定 292
9.2.3 超声波测距仪总体设计 292
9.3 硬件电路设计 292
9.3.1 元器件的选择 293
9.3.2 发射电路设计 294
9.3.3 接收电路设计 294
9.3.4 语音播报电路设计 295
9.3.5 LCD显示电路设计 297
9.4 程序设计 300
9.5 测试结果 303
本章小结 305
思考与练习 305
参考文献 306