第1章 ARM微处理器概述 1
1.1ARM简介 1
1.1.1ARM的历史 1
1.1.2ARM微处理器的技术特点 2
1.2ARM微处理器系列简介 3
1.2.1Actel公司可编程器件 4
1.2.2ATMEL公司微控制器 5
1.2.3Intel公司XScale微处理器 5
1.2.4NXP公司微控制器 6
1.2.5三星公司微处理器 7
1.3ARM嵌入式系统概述 7
1.3.1嵌入式系统硬件基础 8
1.3.2嵌入式系统软件基础 10
1.3.3常见嵌入式系统简介 14
1.4本章小结 16
1.5课后习题 17
第2章 ARM体系结构 19
2.1ARM的组织和实现 19
2.1.13级流水ARM的组织 19
2.1.25级流水ARM的组织 20
2.1.3ARM的指令执行 21
2.1.4ARM的工作状态 22
2.1.5ARM的工作模式 22
2.2异常 23
2.2.1异常类型 23
2.2.2异常发生过程 25
2.3ARM的寄存器 25
2.3.1通用寄存器 26
2.3.2状态寄存器 27
2.3.3Thumb状态下的寄存器集 28
2.4存储器层次 28
2.4.1存储器容量及速度 28
2.4.2片上存储器 29
2.4.3Cache 29
2.5ARM体系结构对系统开发的支持 30
2.5.1ARM协处理器接口 30
2.5.2AMBA总线 31
2.5.3JTAG边界扫描测试结构 31
2.5.4ARM调试结构 33
2.6本章小结 33
2.7课后习题 34
第3章 ARM指令集 35
3.1ARM指令集简介 35
3.1.1ARM指令格式 35
3.1.2ARM指令条件码 36
3.1.3ARM指令的S标志 37
3.2指令集分类介绍 37
3.2.1跳转指令 38
3.2.2算术运算指令 40
3.2.3逻辑运算指令 46
3.2.4存储器访问指令 48
3.2.5数据传送指令 54
3.2.6协处理指令 56
3.2.7异常产生指令 58
3.2.8移位指令 59
3.3ARM的寻址方式 61
3.3.1立即寻址方式 62
3.3.2寄存器寻址方式 62
3.3.3寄存器移位寻址方式 62
3.3.4寄存器间接寻址方式 62
3.3.5基址变址寻址 63
3.4本章小结 63
3.5课后习题 63
第4章 Thumb指令集 65
4.1Thumb指令集概述 65
4.1.1Thumb指令集与ARM指令集的区别 65
4.1.2Thumb指令集代码 65
4.1.3Thumb状态下ARM微处理器的寄存器组织 67
4.2Thumb指令集分类介绍 67
4.2.1跳转指令 67
4.2.2算术运算指令 71
4.2.3逻辑运算指令 78
4.2.4存储器访问指令 81
4.2.5数据传送指令 92
4.2.6异常产生指令 94
4.2.7移位指令 95
4.3本章小结 99
4.4课后习题 99
第5章 ARM程序设计 101
5.1ARM汇编程序 101
5.1.1ARM汇编程序开发框架 101
5.1.2符号数据的定义与使用 103
5.1.3Thumb指令与ARM指令混合使用 104
5.1.4汇编语言的子程序调用 104
5.2ARM嵌入式C语言程序 105
5.2.1变量的定义 105
5.2.2存储类型 107
5.2.3用户自定义类型 107
5.2.4函数的定义 108
5.2.5中断处理函数 109
5.2.6预处理程序 110
5.2.7程序控制语句 112
5.3C语言与汇编语言混合编程 113
5.3.1C语言中内嵌汇编 114
5.3.2C程序调用汇编程序 115
5.3.3汇编程序调用C语言代码 115
5.3.4高级语言与汇编语言调用规则 116
5.4本章小结 117
5.5课后习题 117
第6章 ARM芯片的系统设计 119
6.1ARM芯片选型 119
6.1.1性能参数的考虑 119
6.1.2外设接口的考虑 120
6.1.3芯片封装的选择 121
6.1.4LPC213X系列ARM微处理器介绍 122
6.2ARM微处理器常见功能模块介绍 123
6.2.1时钟管理 123
6.2.2看门狗 124
6.2.3Embedded-ICE逻辑 125
6.3ARM微处理器的接口模块 126
6.3.1UART接口 127
6.3.2I2C接口 128
6.3.3SPI接口 129
6.3.4脉宽调制器 131
6.3.5A/D转换器 132
6.3.6实时时钟 134
6.3.7Embedded-ICE逻辑模块 134
6.4本章小结 135
6.5课后习题 135
第7章 ARM嵌入式系统开发 137
7.1ARM嵌入式系统的基本知识 137
7.1.1ARM小系统 137
7.1.2存储地址的映射和重映射 138
7.1.3系统初始化 139
7.2ARM嵌入式软件的基本概念 141
7.2.1目标文件 141
7.2.2镜像文件 141
7.2.3镜像文件的执行 142
7.3ARM的软件开发环境ADS 142
7.3.1CodeWarrior开发环境 143
7.3.2ADS中的编译链接 145
7.3.3AXD调试器介绍 147
7.3.4AXD调试器的使用 148
7.4本章小结 151
7.5课后习题 152
第8章 交通信号灯控制系统 153
8.1实例说明 153
8.2硬件电路设计 154
8.2.1LED输出电路 155
8.2.2按键电路 156
8.2.3信号灯显示控制电路 156
8.3软件设计 157
8.3.1LED输出程序 157
8.3.2按键扫描程序 159
8.3.3时间中断处理函数 160
8.3.4主函数 161
8.4实例总结 163
第9章 数字秒表 165
9.1实例说明 165
9.2硬件电路设计 165
9.2.1ARM微处理器电路 165
9.2.2键盘输入电路 168
9.2.3LED输出电路 168
9.3软件设计 170
9.3.1秒表计时器控制 170
9.3.2键盘输入扫描程序 172
9.3.3LED七段码扫描程序 173
9.3.4主控程序 174
9.4实例总结 175
第10章 温度计 177
10.1实例说明 177
10.2温度计的硬件设计 178
10.2.1传感器电路 178
10.2.2A/D接口电路 178
10.2.3按键电路 179
10.2.4LED驱动电路 180
10.3温度计的软件设计 182
10.3.1检测按键输入 182
10.3.2LED显示输出 182
10.3.3温度测量和参数校正 184
10.3.4程序总体框架 185
10.4实例总结 186
第11章 俄罗斯方块游戏 187
11.1实例说明 187
11.2硬件电路设计 188
11.2.1点阵型LCD 188
11.2.2按键电路 191
11.3软件设计 192
11.3.1按键扫描函数 192
11.3.2时间中断处理函数 193
11.3.3液晶显示函数 193
11.3.4游戏内核 195
11.3.5主函数 197
11.4实例总结 198
第12章 服务请求系统 199
12.1实例说明 199
12.2系统设计 200
12.3服务终端设计 201
12.3.1硬件设计 201
12.3.2软件设计 201
12.4控制中心设计 202
12.4.1硬件设计 202
12.4.2软件设计 203
12.5实例总结 206
第13章 手写板 207
13.1实例说明 207
13.2硬件电路设计 207
13.2.1触摸屏原理介绍 208
13.2.2触摸屏电路 211
13.2.3SRAM电路 211
13.2.4USB接口电路 213
13.3软件设计 214
13.3.1时间中断程序 214
13.3.2USB通信程序 214
13.3.3触摸屏控制程序 215
13.3.4主程序 217
13.4实例总结 218
第14章 无线指令终端 219
14.1实例说明 219
14.2硬件设计 220
14.2.1按键电路设计 220
14.2.2字符型液晶显示电路 221
14.2.3nRF905芯片介绍 221
14.2.4无线接收模块电路 224
14.3软件设计 225
14.3.1无线接收程序 225
14.3.2液晶控制程序 227
14.3.3主函数 228
14.4实例总结 230
第15章 计算器 231
15.1实例说明 231
15.2硬件电路设计 231
15.2.1字符型液晶显示 231
15.2.2键盘输入 234
15.3软件设计 235
15.3.1液晶显示 235
15.3.2按键扫描 236
15.3.3表达式计算 238
15.3.4主函数 240
15.4实例总结 241
第16章 USB-Key 243
16.1实例说明 243
16.2硬件电路设计 244
16.2.1Flash电路设计 244
16.2.2USB接口设计 246
16.3软件设计 247
16.3.1UART操作函数 247
16.3.2Flash操作函数 249
16.3.3主函数 250
16.4实例总结 252
第17章 逻辑分析仪 253
17.1实例说明 253
17.2硬件电路设计 254
17.2.1FPGA芯片XC3S250 254
17.2.2双口RAM电路 257
17.2.3FPGA与ARM微处理器的接口电路 258
17.2.4ARM微处理器与USB接口电路 259
17.3软件设计 259
17.3.1ARM与FPGA的通信协议 260
17.3.2ARM微处理器与PC的通信协议 260
17.3.3FPGA中的逻辑 261
17.3.4系统的工作流程 262
17.3.5ARM微处理器上的程序设计 262
17.4实例总结 264
附录A习题答案 265