当前位置:首页 > 工业技术
ARM微控制器基础与实战
ARM微控制器基础与实战

ARM微控制器基础与实战PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:周立功等编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2003
  • ISBN:7810773836
  • 页数:514 页
图书介绍:本书以ARM控制器LPC2104及基于LPC2104的开发学习板EasyARM2104入手,逐步引导读者掌握使用开发ARM的基础知识。本书从ARM芯片开发者的角度介绍ARM7TDMI的体系结构和指令系统;详细介绍ARM控制器LPC2104的内部结构和开发学习板Easy ARM 2104的研件结构知识,给出LPC2104各个功能部件的编程方法。介绍如何将操作系统μC/OS-Ⅱ移植到LPC2104,在不同情况下如何编译这些代码。
《ARM微控制器基础与实战》目录

目 录 1

第1章 从程序员角度看ARM7TDMI(-S) 1

1.1 简 介 1

1.1.1 ARM 1

1.1.2 ARM的体系结构 1

1.1.3 ARM7TDMI(-S) 2

1.2 ARM7TDMI(-S)的模块和内核框图 3

1.3体系结构直接支持的数据类型 3

1.5处理器模式 5

1.4处理器状态 5

1.6内部寄存器 6

1.6.1 简 介 6

1.6.2 ARM状态寄存器集 6

1.6.3 Thumb状态寄存器集 9

1.7程序状态寄存器 11

1.7.1 简 介 11

1.7.2条件代码标志 12

1.7.3控制位 12

1.8异 常 13

1.8.1 简 介 13

1.7.4保留位 13

1.8.2异常入口/出口汇总 14

1.8.3进入异常 14

1.8.4退出异常 15

1.8.5快速中断请求 15

1.8.6 中断请求 15

1.8.7 中 止 16

1.8.8软件中断指令 16

1.8.10异常向量 17

1.8.11异常优先级 17

1.8.9未定义的指令 17

1.9 中断延迟 18

1.9.1最大中断延迟 18

1.9.2最小中断延迟 18

1.10复位 18

1.11存储器及存储器映射I/O 19

1.11.1 简 介 19

1.11.2地址空间 19

1.11.3存储器格式 20

1.11.4未对齐的存储器访问 21

1.11.5指令的预取和自修改代码 22

1.11.6存储器映射的I/O 25

1.13 ARM7TDMI(-S)指令集简介 27

1.13.1 简 介 27

1.12寻址方式简介 27

1.13.2 ARM指令集 28

1.13.3 Thumb指令集 31

1.14协处理器接口简介 32

1.14.1 简 介 32

1.14.2可用的协处理器 33

1.15调试接口简介 33

2.1 ARM处理器寻址方式 35

第2章 ARM7TDMI(-S)指令集及汇编 35

2.2指令集介绍 38

2.2.1 ARM指令集 38

2.2.2 Thumb指令集 62

2.3伪指令 78

2.3.1符号定义伪指令 78

2.3.2数据定义伪指令 81

2.3.3报告伪指令 86

2.3.4汇编控制伪指令 88

2.3.5杂项伪指令 91

2.3.6 ARM伪指令 97

2.3.7 Thumb伪指令 98

2.4 ARM汇编程序设计 99

2.5 C与汇编混合编程 108

2.5.1 内嵌汇编 109

2.5.2访问全局变量 113

2.5.3 C与汇编相互调用 113

第3章 LPC2106/2105/2104硬件结构与功能 117

3.1 简 介 117

3.1.1 特性 118

3.1.2引脚信息 119

3.2 LPC2106/2105/2104存储器寻址 123

3.2.1片内存储器 123

3.2.2存储器映射 124

3.2.3 LPC2106/2105/2104存储器重新映射和Boot Block 126

3.2.4预取指中止和数据中止异常 129

3.3系统控制模块 129

3.3.1 系统控制模块功能汇总 129

3.3.2 引脚描述 129

3.3.3晶体振荡器 130

3.3.4寄存器描述 130

3.3.5外部中断输入 131

3.3.6存储器映射控制 134

3.3.7 PLL(锁相环) 135

3.3.8功率控制 140

3.3.9 复 位 142

3.3.10 VPB分频器 142

3.3.11唤醒定时器 143

3.4存储器加速模块 144

3.4.1 介 绍 144

3.4.2存储器加速器模块的操作模式 146

3.4.4寄存器描述 147

3.4.3 MAM配置 147

3.5 向量中断控制器 149

3.5.1 特性 149

3.5.2描述 149

3.5.3寄存器描述 149

3.5.4 VIC寄存器 151

3.5.5 中断源 154

3.5.6 VIC使用事项 156

3.6.3 引脚描述 159

3.6.2应 用 159

3.6.1 特性 159

3.6 GPIO 159

3.6.4寄存器描述 160

3.6.5 GPIO使用注意事项 161

3.7引脚连接模块 162

3.7.1介绍 162

3.7.2应 用 162

3.7.3寄存器描述 162

3.8.2引脚描述 167

3.8.1 特性 167

3.8 UART0 167

3.8.3寄存器描述 168

3.8.4结构 174

3.9 UART1 176

3.9.1 特性 176

3.9.2引脚描述 177

3.9.3寄存器描述 177

3.9.4结构 185

3.10.2 应用 188

3.10.3描述 188

3.10.1 特性 188

3.10 I2C接口 188

3.10.4引脚描述 191

3.10.5寄存器描述 191

3.10.6结构 196

3.11 SPI接口 199

3.11.1 特性 199

3.11.2描述 199

3.11.3引脚描述 202

3.11.4寄存器描述 202

3.11.5结构 204

3.12定时器0和定时器1 206

3.12.1特性 206

3.12.2 应 用 207

3.12.3引脚描述 207

3.12.4寄存器描述 207

3.12.5定时器举例操作 212

3.12.6结构 213

3.13脉宽调制器(PWM) 215

3.13.1特性 215

3.13.2描述 216

3.13.4寄存器描述 219

3.13.3引脚描述 219

3.14实时时钟 226

3.14.1 特性 226

3.14.2描述 226

3.14.3结构 226

3.14.4寄存器描述 227

3.14.5 RTC 中断 228

3.14.6混合寄存器组 228

3.14.7完整时间寄存器 230

3.14.8时间计数器组 231

3.14.10基准时钟分频器(预分频器) 232

3.14.9报警寄存器组 232

3.15看门狗 236

3.15.1特性 236

3.15.2应用 237

3.15.3描述 237

3.15.4寄存器描述 237

3.15.5方框图 239

3.16 Flash存储器系统和编程 240

3.16.1 Flash存储器系统 240

3.16.2 Flash Boot装载程序 240

3.16.5描述 241

3.16.3特性 241

3.16.4应用 241

3.16.6 Boot处理流程图 244

3.16.7扇区数 244

3.16.8JTAG Flash编程接口 256

第4章EasyARM2104开发实验板 258

4.1功能特点 258

4.2.1原理图 259

4.2.2原理说明 259

4.2硬件原理 259

4.3硬件结构 264

4.3.1布局图 264

4.3.2跳线器及连接器说明 265

4.4实验板使用基础 268

4.4.1调试框图 268

4.4.2调试设置及操作 268

4.4.3固化程序 273

4.4.4其它 276

5.1 LPC2106/2105/2104系统基础 278

5.1.1 系统时钟介绍 278

第5章 LPC2106/2105/2104基础实验 278

5.1.2 REMAP操作及调试 280

5.1.3启动代码说明 281

5.2 LPC2106/2105/2104功能部件实战 287

5.2.1 GPIO 287

5.2.2 中 断 299

5.2.3定时器 306

5.2.4 UART 311

5.2.5 I2C接口 320

5.2.6 SPI接口 334

5.2.7 PWM 339

5.2.8实时时钟 344

5.2.9 WDT 350

5.2.10低功耗 353

5.2.11 IAP应用 358

5.2.12除法运算 364

5.3 PC机人机界面 370

5.3.1 EasyARM软件窗口介绍 370

5.3.2EasyARM软件通信协议 370

5.3.3EasyARM应用例程 373

6.1 μC/OS Ⅱ简介 379

第6章 移植μC/OS-Ⅱ 379

6.2移植规划 380

6.2.1编译器的选择 380

6.2.2任务模式的取舍 380

6.2.3支持的指令集 380

6.2.4对RTOS系统内核与任务分别编译的支持 380

6.3.2文件的划分 381

6.3.3异常向量表 381

6.3.1为何要编写启动代码 381

6.3编写LPC2106/2105/2104的启动代码 381

6.3.4系统初始化代码 382

6.3.5 初始化CPU堆栈InitStack 383

6.3.6异常处理代码与C语言接口的例子 384

6.3.7系统基本初始化TargetResetInit()的例子 387

6.3.8初始化库函数的堆 391

6.4移植μC/OS—Ⅱ 391

6.4.1关于头文件Includes.h和Config.h 391

6.4.2不依赖于编译的数据类型 391

6.4.3使用软中断SWI作底层接口 392

6.4.4软中断的汇编接口 393

6.4.5 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL() 397

6.4.6 OS_STK_GROWTH 398

6.4.7 OS_TASK_SW() 399

6.4.8OSStartHighRdy() 399

6.4.9 OSCtxSw()和OSIntCtxSw() 400

6.4.10 中断程序及系统时钟节拍中断服务程序的编写 405

6.4.11 OSTaskStkInt() 407

6.4.12…Hook()函数 408

6.4.13移植增加的特定函数 409

6.5 移植μC/OS—Ⅱ的例子 412

6.5.3范例2的移植 413

6.5.1 移植例子中的PC.C(PC中的功能函数) 413

6.5.2范例1的移植 413

6.5.4范例3的移植 414

第7章移植代码的使用 415

7.1高性能的应用 415

7.1.1选择指令集 415

7.1.2 建立ADS的工程 415

7.1.3调试参数的设置 422

7.1.4编程注意事项 423

7.2.1选择指令集 424

7.2.2建立ADS的工程 424

7.2高代码密度的应用 424

7.2. 3调试参数的设置 426

7.2.4编程注意事项 426

7.3性能与代码密度兼顾的应用 427

7.3.1选择指令集 427

7.3.2建立ADS的工程 427

7.3.3调试参数的设置 428

7.3.4编程注意事项 428

7.4.2分别编译的局限性 429

7.4.1分别编译的必要性 429

7.4 μC/OS—Ⅱ与应用代码分别编译的应用 429

7.4.3生成μC/OS-Ⅱ的ROM映像代码(写入Flash中) 430

7.4.4生成应用程序代码 434

7.4.5注意事项 436

第8章移植代码新增的函数手册和配置手册 437

8.1新增的函数手册 437

8.2新增的配置手册 440

9.2.2 函数手册 441

9.2.1 配置选项 441

9.2使用 441

第9章 中间件之数据队列 441

9.1 概述 441

9.2.3使用范例 445

9.3原理 447

9.3.1数据结构 447

9.3.2建立数据队列 447

9.3.3 FIFO方式发送数据 449

9.3.4 LIFO方式发送数据 451

9.3.5取得数据 454

9.3.7取得数据队列状态 456

9.3.6清空数据队列 456

第10章 中间件之串口驱动 458

10.1 概 述 458

10.2使用 458

10.2.1配置选项 458

10.2.2 函数手册 458

10.2.3使用范例 460

10.3原理 463

10.3.1初始化UART0 463

10.3.2 UART0中断处理例程 465

10.3.4发送多个字节 468

10.3.3发送一个字节 468

10.3.5接收一个字节 469

第11章 中间件之I2C总线驱动 470

11.1 概 述 470

1 1.2 使 用 470

11.2.1函数手册 470

11.2.2使用范例 472

11.3原理 474

11.3.1初始化I2C 474

11.3.2写I2C从器件 475

11.3.3从I2C从器件读数据 477

11.3.4 I2C中断服务程序 478

第12章 中间件之SPI总线驱动 481

12.1概述 481

12.2 使用 481

12.2.1配置选项 481

12.2.2 函数手册 482

12.2.3使用范例 484

12.3原理 486

12.3.1初始化SPI 486

12.3.3 开始访问SPI(获取SPI访问权) 487

12.3.2获取SPI 状态 487

12.3.4读写SPI 488

12.3.5访问SPI结束(归还SPI访问权) 488

12.3.6 SPI中断服务程序 489

第13章 在μC/OS-Ⅱ中使用其它片内外设 491

13.1 概 述 491

13.2通用I/O的使用 491

1 3.3定时器的使用 493

13.4 PWM的使用 493

13.5实时时钟的使用 495

A.2进入AXD后无法调试 500

附录A常见问题 500

A.1 程序写入Flash后不能运行 500

A.3不能进入ISP 501

A.4从JTAG调试出错 501

A.5 项目不能拷贝到其它目录 501

附录BJTAG接口设计指南 503

附录C ARM指令集相关列表汇总 503

C.1 ARM指令列表 503

C.2 T humb指令列表 505

C.3汇编预定义变量及伪指令 507

C.4其它 511

返回顶部