ARM 嵌入式系统应用开发基础 (第二版)

ARM 嵌入式系统应用开发基础 (第二版) 教材名称: ARM 嵌入式系统应用开发基础 (第二版)
ISBN号: 978-7-89436-423-4 作者: 严海颖、赵宇枫、曹起武
字数: 403千字 规格: 16开
印制时间: 2016-03-01 出版日期: 2016-03-01
定价: 39.8 元 样章下载: 样章-ARM嵌入式系统应用开发基础(第二版)-正文.pdf
购买地址:

        本教材以NXP公司的LPC2114芯片为载体,主要介绍了基于ARM 内核的32位嵌入式微处理器的硬件体系结构、各种常用外设接口编程技术,并以项目案例的方式介绍了应用系统的设计过程。程序设计以“前后台”(C语言)编程为主,暂不涉及操作系统,为“基于嵌入式操作系统的应用开发”等后续课程奠定基础。

第1章 嵌入式系统概论 1

1.1 嵌入式系统的概念 1

1.1.1 我们身边的嵌入式系统 1

1.1.2 嵌入式系统的定义 2

1.1.3 嵌入式系统的特点 3

1.1.4 嵌入式系统的应用 3

1.2 嵌入式系统的基本组成 4

1.2.1 嵌入式系统硬件平台 5

1.2.2 嵌入式系统的软件结构 7

1.3 嵌入式系统的发展趋势 8

1.4 嵌入式系统学习的指南 9

1.5 本章小结 10

1.6 强化练习 10

第2章 ARM7体系结构与指令系统简介 11

2.1 ARM 简介 11

2.1.1 ARM 公司与ARM 微处理器 11

2.1.2 ARM 体系结构发展 12

2.1.3 ARM 微处理器系列 14

2.2 ARM7的体系结构 17

2.2.1 ARM7TDMI功能框图 17

2.2.2 ARM 处理器的工作状态 18

2.2.3 ARM 处理器的工作模式 19

2.2.4 ARM 内部寄存器 19

2.2.5 指令长度及数据类型 23

2.2.6 存储器格式 24

2.2.7 三级流水线 25

2.2.8 异常处理 25

2.3 ARM 指令系统简介 29

2.3.1 ARM 指令系统概述 29

2.3.2 ARM 处理器的寻址方式 32

2.3.3 ARM 指令分类及功能一览表 33

2.4 本章小结 34

2.5 强化练习 34__

第3章 ARM 微处理器硬件结构 35

3.1 LPC2000系列微处理器简介 35

3.1.1 处理器的特性 35

3.1.2 处理器内部结构框图 36

3.1.3 处理器的外部引脚 37

3.2 存储器管理 41

3.2.1 片内存储器 41

3.2.2 片外存储器 41

3.2.3 存储器映射 42

3.2.4 存储器重映射与引导块 43

3.3 本章小结 44

3.4 强化练习 44

第4章 ARM 应用程序开发和电路仿真环境 45

4.1 嵌入式系统的开发流程和开发环境 45

4.1.1 嵌入式系统开发流程 45

4.1.2 嵌入式系统的硬件和软件开发 46

4.2 基于ARM 的应用程序开发套件RealView MDK  47

4.2.1 RealView MDK开发套件简介 47

4.2.2 KeilμVision集成开发环境的使用步骤 48

4.2.3 基础实训(1) ARMC程序的编译连接 53

4.3 嵌入式系统电路设计与仿真软件Proteus  57

4.3.1 Proteus电路仿真软件简介 57

4.3.2 基础实训(2) Proteus电路设计与仿真快速入门 58

4.4 本章小结 61

4.5 强化练习 61

第5章 GPIO模块及其应用 62

5.1 输入/输出设备与片内外设 62

5.1.1 概述 62

5.1.2 通用输入/输出端口GPIO  62

5.2 LPC2114的引脚功能连接模块 63

5.2.1 引脚功能连接模块的作用 63

5.2.2 引脚功能连接模块的相关寄存器 63

5.2.3 引脚功能连接模块的应用编程 65

5.3 LPC2114的通用输入/输出模块GPIO  65

5.3.1 GPIO端口的基本结构和工作原理 65

5.3.2 GPIO相关寄存器的详细说明 66

5.3.3 GPIO输出控制编程 67__

7.5 完整人机接口系统的软件设计 106

7.5.1 基础实训(5) 4×4矩阵键盘和2路LED显示系统(1)  106

7.5.2 基础实训(6) 4×4矩阵键盘和2路LED显示系统(2)  107

7.6 本章小结 110

7.7 强化练习 110

第8章 综合实训(1) 简单计算器 111

8.1 计算器的电路设计和功能定义 111

8.2 计算器的工作过程分析 112

8.2.1 工作的基本流程 112

8.2.2 程序的基本架构 112

8.3 计算器系统的设计 113

8.3.1 一位数计算器设计 113

8.3.2 两位数计算器设计 119

8.4 本章小结 127

8.5 强化练习 127

第9章 中断系统与VIC  128

9.1 中断 128

9.1.1 中断的基本概念 128

9.1.2 中断处理过程 129

9.2 向量中断控制器(VIC)  130

9.2.1 概述 130

9.2.2 程序状态寄存器CPSR与VIC的关系 130

9.2.3 中断源 130

9.2.4 中断分类 132

9.2.5 VIC的主要管理功能 132

9.3 VIC的结构、功能及相关寄存器 132

9.3.1 控制寄存器 134

9.3.2 参数设置寄存器 135

9.3.3 状态寄存器 137

9.3.4 保护使能寄存器 137

9.3.5 IRQ中断过程实例分析 137

9.3.6 VIC基本使用方法 138

9.3.7 VIC编程要点小结 139

9.4 应用编程举例 140

9.4.1 快速中断FIQ  140

9.4.2 向量IRQ  141

9.4.3 非向量IRQ  141__

9.4.4 多个中断设置 142

9.5 本章小结 142

9.6 强化练习 142

第10章 外部中断 143

10.1 外部中断概述 143

10.1.1 外部中断源 143

10.1.2 LPC2124的外部中断触发信号 144

10.1.3 边沿触发中断 144

10.1.4 电平触发中断 144

10.2 外部中断的相关寄存器 145

10.2.1 相关寄存器汇总 145

10.2.2 外部中断标志寄存器(EXTINT) 145

10.2.3 外部中断唤醒寄存器(EXTWAKE)  145

10.2.4 外部中断方式控制寄存器(EXTMODE)  146

10.2.5 外部中断极性控制寄存器(EXTPOLAR) 146

10.2.6 外部中断引脚设置 146

10.2.7 注意要点 147

10.3 外部中断与VIC  147

10.3.1 外部中断与VIC的关系 147

10.3.2 外部中断的设置 148

10.4 实例分析 149

10.4.1 基础实训(1) 一个外部中断(按键)控制单个LED 149

10.4.2 基础实训(2) 两个外部中断控制两个LED状态 152

10.4.3 基础实训(3) 三个外部中断控制按键计数 154

10.5 本章小结 158

10.6 强化练习 158

第11章 定时计数器 159

11.1 定时计数器0/1 159

11.1.1 特性 159

11.1.2 定时器结构及工作原理 159

11.1.3 功能简介 160

11.2 定时计数器的相关寄存器 161

11.2.1 分频器结构描述 162

11.2.2 控制寄存器TCR  162

11.2.3 中断标志寄存器IR  163

11.2.4 匹配功能寄存器描述 163

11.2.5 捕获功能寄存器描述 166

11.3 定时器与中断系统 168

11.3.1 定时器与VIC的关系 168

11.3.2 匹配中断 168

11.3.3 捕获中断 168

11.3.4 使用定时器的注意要点 169

11.4 定时器操作示例 169

11.4.1 操作流程 169

11.4.2 示例1———定时器0初始化 169

11.4.3 示例2———用定时器测量脉冲宽度 170

11.4.4 示例3———匹配输出 170

11.4.5 示例4———定时器捕获 170

11.5 案例设计 171

11.5.1 基础实训(1) 使用定时器0实现1sIRQ定时中断控制LED闪烁 171

11.5.2 基础实训(2) 使用定时器1实现比较匹配输出控制LED闪烁 174

11.5.3 基础实训(3) 定时器控制的流水灯 176

11.6 本章小结 179

11.7 强化练习 179

第12章 综合实训(2) 电子钟 180

12.1 电子钟的功能定义与电路设计 180

12.2 电子钟的工作过程分析 180

12.2.1 工作的基本流程 180

12.2.2 程序的基本架构 180

12.3 电子钟系统的程序设计 182

12.4 本章小结 186

12.5 强化练习 186

第13章 A/D转换器 187

13.1 A/D转换器的基本概念 187

13.2 LPC2114/2124的A/D转换器 187

13.2.1 特性 187

13.2.2 A/D转换器描述 188

13.2.3 A/D转换器内部结构 188

13.3 A/D转换器寄存器描述 188

13.3.1 控制寄存器ADCR  189

13.3.2 数据寄存器ADDR  191

13.4 ADC与中断 192

13.4.1 ADC中断与VIC的关系 192

13.4.2 ADC中断说明 192

13.4.3 使用A/D转换器的注意要点 192

13.5 A/D转换器操作示例 193

13.5.1 操作流程 193

13.5.2 应用举例 193

13.6 基础实训单路模拟信号采集 193

13.7 本章小结 197

13.8 强化练习 197

第14章 综合实训(3) 数字电压表 198

14.1 数字直流电压表的功能定义 198

14.2 数字直流电压表电路设计 198

14.3 数字直流电压表系统的软件设计 198

14.4 本章小结 202

14.5 强化练习 202

第15章 UART串行通信口及应用 203

15.1 串行通信基本知识 203

15.1.1 串行通信基本概念 203

15.1.2 串行通信基本通信方式 204

15.2 LPC2000系列的UART  205

15.2.1 基本特性 205

15.2.2 UART结构与原理 205

15.3 UART0寄存器描述 206

15.3.1 UART0接收器缓存寄存器(U0RBR)  207

15.3.2 UART0发送器保持寄存器(U0THR)  207

15.3.3 UART0除数锁存LSB寄存器(U0DLL) 207

15.3.4 UART0除数锁存MSB寄存器(U0DLM) 207

15.3.5 UART0线控制寄存器(U0LCR)  208

15.3.6 UART0线状态寄存器(U0LSR) 208

15.3.7 UART0FIFO控制寄存器(U0FCR) 209

15.4 UART应用示例 210

15.4.1 连接方式 210

15.4.2 操作流程 210

15.4.3 UART0初始化编程 211

15.4.4 UART0收发数据编程 212

15.5 UART0应用编程举例 212

15.6 应用实例 213

15.6.1 基础实训(1) LPC2000处理器与PC之间的通信 213

15.6.2 基础实训(2) 基于UART串口通信的多路数据采集系统 216

15.7 本章小结 220

15.8 强化练习 220

第16章 SPI同步串口模块 221

16.1 SPI接口 221

16.1.1 SPI总线 221

16.1.2 LPC2000系列的SPI接口 222

16.1.3 SPI数据传输 223

16.2 SPI寄存器描述 224

16.2.1 SPI控制寄存器(S0SPCR,S1SPCR) 225

16.2.2 SPI状态寄存器(S0SPSR,S1SPSR)  225

16.2.3 SPI数据寄存器(S0SPDR,S1SPDR) 226

16.2.4 SPI时钟计数寄存器(S0SPCCR,S1SPCCR) 226

16.2.5 SPI中断寄存器(S0SPINT,S1SPINT) 226

16.3 SPI操作模式 227

16.3.1 主机操作 227

16.3.2 从机操作 229

16.3.3 异常状况 231

16.4 基础实训主机模式SPI接口发送数据 232

16.5 本章小结 234

16.6 强化练习 234

第17章 I2C同步串口 235

17.1 I2C接口描述 235

17.2 I2C寄存器描述 236

17.2.1 I2C控制置位寄存器(I2CONSET) 236

17.2.2 I2C控制清零寄存器(I2CONCLR) 237

17.2.3 I2C状态寄存器(I2STAT) 237

17.2.4 I2C数据寄存器(I2DAT) 238

17.2.5 I2C从地址寄存器(I2ADR) 238

17.2.6 I2CSCL占空比寄存器(I2SCLL和I2SCLH) 238

17.3 I2C操作模式 238

17.3.1 主模式I2C  239

17.3.2 从模式I2C  242

17.4 基础实训 I2C主机模式发送数据 243

17.5 本章小结 249

17.6 强化练习 249

参考文献 250__

        本教材在内容安排上力求做到理论与实践并重。“理论部分”:简要介绍了ARM 的体系结构和指令系统,重点强调复杂嵌入式处理器的片内外设模块以及(C语言)应用编程技术;“实训部分”:对于理论部分的各个知识点,都设计了短小简明的基础实训项目,便于学生“对号入座”地理解知识点。另一方面,为了提高学生的综合运用能力,让学生对应用系统的构成和设计有比较清晰的了解,我们用了三个典型的中小型应用系统设计实训项目贯穿整个教材,说明了(基于“前后台”编程的)嵌入式应用系统的一般设计方法。