《普通高等教育“十二五”规划教材·电子信息科学与工程类专业规划教材:ARM Cortex-M3微控制器原理与应用》从基础的理论知识到实际的应用开发,详细地介绍了ARM Cortex-M3处理器的内核体系结构,包括其内核组件、总线结构、流水线、指令集、编程模型、存储器系统、电源管理、系统时钟和复位、异常模型以及调试系统等。《普通高等教育“十二五”规划教材·电子信息科学与工程类专业规划教材:ARM Cortex-M3微控制器原理与应用》选取恩智浦半导体(NXP)公司的ARM Cortex-M3系列芯片LPC176x处理器为例,详细介绍了LPC1700系列处理器的内核结构与高级外设的工作原理与应用开发方法,以及基于CMSIS接口标准软件设计方法。《普通高等教育“十二五”规划教材·电子信息科学与工程类专业规划教材:ARM Cortex-M3微控制器原理与应用》的例程已在LPCXpresso开发平台上调试通过,该平台可与本书配合使用。
随着新一代信息通信技术的迅猛发展,嵌入式系统的应用无处不在。ARM公司是目前公认的业界领先的32位嵌入式RISC(精简指令计算机)微处理器设计公司,目前全世界有200多家领先的半导体厂商获得了ARM授权,基于ARM内核的微处理器占领了32位嵌入式系统的大部分份额。ARM Cortex-M处理器系列是一系列可向上兼容的高能效、易操作的处理器,采用ARM公司最新的微控制器ARMv7版本内核体系结构。ARM Cortex-M3作为Cortex-M系列的第一款处理器,集8位单片机的价格和32位ARM处理器的性能于一身,毫不夸张地说,可以看做MCS-51单片机时代的终结者。
NXP公司的LPC1700系列处理器,采用的是第二代Cortex-M3内核,时钟速度可达120MHz,可以实现更低的功耗和维持更久的电池寿命,在调试和解决疑难问题的过程中,具有更好的灵活性,在电子仪表、照明、工业网络、报警系统、白色家电和电机控制等领域中得到广泛的应用。本书主要以LPC1700系列微处理器为硬件平台,详细介绍ARM Cortex-M3处理器的原理与应用开发技术。
第1章简要介绍ARM Cortex-M3内核的基础知识,包括ARM Cortex-M3体系结构和内核分类,并列举NXP公司的Cortex-M3系列产品,为处理器的选型提供参考。
第2章介绍Cortex-M3内核,包括Cortex-M3处理器内核结构、编程模型和指令集知识,以及存储器映射、时钟、异常和电源管理等内容。通过本章的阅读,可使读者了解Cortex-M3的内部结构和基本工作原理。
第3章介绍LPC1700系列微控制器基本结构,包括系统控制单元、存储器总线结构、电源管理、时钟、引脚配置、嵌套中断向量控制器、定时器和调试接口等。
第4章介绍LPC1700系列微控制器高级接口,包括串行口UART、SPI、I2C、PWM、正交编码接口QEI、A/D和D/A转换器、USB总线等。
第5章介绍基于CMSIS接口标准软件设计,包括Cortex微控制器软件接口标准CMSIS的基本构架、如何在LPCXpresso软件中使用CMSIS等。通过本章的阅读,读者可以掌握基于CMSIS接口标准的函数的使用。
本书由张永辉博士组织编写和完成。在此感谢海南大学信息科学技术学院院长杜文才教授对于本书编写工作的大力支持,团队成员沈重教授、陈褒丹高级工程师、白勇博士、任佳博士和易家傅、丁洁等多位同事参与了本书的编写工作,蔡继兴、李青倩、金鑫、黄潇和潘奇等硕士研究生负责了本书编写过程中的资料整理工作。本书的出版得到了海南大学211工程专项资金支持,编写过程中得到了NXP公司金宇杰先生、王朋朋女士、张宇先生以及北京胜创特公司罗光军先生的大力支持和帮助,在此表示感谢!
鉴于Cortex-M3的强大功能和LPC1700系列微处理器的丰富外设,限于篇幅本书只对部分内容进行了介绍,关于通用DMA、SSP、I2S、CAN总线和以太网部分,请读者参考LPC1700用户手册。由于编者的水平有限,书中难免存在遗漏与不足之处,恳请读者批评指正。
编者
2013年2月
张永辉,副教授,海南大学信息学院。2006年从大连理工大学博士毕业,到海南大学信息学院任教至今。
第1章 ARM Cortex-M3微处理器
1.1 ARM CORTEX系列微处理器简介
1.1.1 Cortex-A系列
1.1.2 Cortex-R系列
1.1.3 Cortex-M系列
1.1.4 经典ARM处理器的Cortex替代方案
1.2 ARM CORTEX-M3微处理器
1.2.1 Cortex-M3的版本
1.2.2 Cortex-M3处理器应用领域
1.2.3 Cortex-M3处理器的实现
1.3 从ARM7升级到ARM CORTEX-M
1.4 NXP公司CORTEX-M3系列微处理器
1.4.1 LPC1300系列
1.4.2 LPC1700系列
1.4.3 LPC1800系列
1.5 ARM CORTEX-M3微处理器开发工具
1.5.1 Cortex-M3开发套件
1.5.2 嵌入式操作系统支持
习题
第2章 ARM Cortex-M3内核体系结构
2.1 CORTEX-M3处理器组件
2.1.1 处理器内核
2.1.2 嵌套向量中断控制器NVIC
2.1.3 总线矩阵
2.1.4 存储器保护单元MPU
2.1.5 系统调试组件
2.1.6 调试端口SW/SWJ-DP
2.1.7 AHB访问端口AHB-AP
2.1.8 唤醒中断控制器WIC
2.1.9 ROM表
2.2 总线结构
2.3 流水线
2.4 指令集
2.5 编程模型
2.5.1 工作模式
2.5.2 工作状态
2.5.3 特权访问和用户访问
2.5.4 主堆栈和进程堆栈
2.5.5 寄存器组
2.5.6 数据类型
2.6 存储器系统
2.6.1 存储器映射
2.6.2 位带操作
2.6.3 存储器格式
2.7 系统时钟和复位
2.7.1 时钟
2.7.2 复位
2.7.3 复位序列
2.8 电源管理
2.9 异常
2.9.1 异常模型
2.9.2 异常类型
2.9.3 异常优先级
2.9.4 异常处理
2.10 调试系统
习题
第3章 LPC1700系列微处理器基础
3.1 LPC1700微处理器结构
3.2 存储器系统
3.2.1 存储器映射
3.2.2 APB外设地址
3.2.3 存储器重映射
3.2.4 片上Flash存储器系统
3.2.5 片上静态RAM
3.2.6 Flash存储器加速器
3.2.7 Flash存储器接口和编程
3.3 系统控制单元
3.3.1 复位电路
3.3.2 掉电检测
3.3.3 外部中断输入
3.3.4 系统控制和状态寄存器
3.4 系统时钟
3.4.1 振荡器
3.4.2 时钟源选择多路复用
3.4.3 锁相环PLL
3.4.4 锁相环PLL
3.4.5 时钟分频器
3.4.6 外部时钟输出引脚
3.5 实时时钟RTC
3.5.1 RTC引脚描述和配置
3.5.2 寄存器描述
3.5.3 RTC中断
3.5.4 校准过程
3.5.5 RTC基本操作
3.5.6 RTC使用注意事项
3.6 电源管理
3.6.1 功率模式控制寄存器
3.6.2 外设功率控制寄存器
3.6.3 睡眠模式
3.6.4 深度睡眠模式
3.6.5 掉电模式
3.6.6 深度掉电模式
3.6.7 唤醒定时器
3.7 引脚及I/O功能配置
3.7.1 引脚布局
3.7.2 引脚连接模块
3.8 通用输入/输出GPIO
3.8.1 GPIO引脚描述
3.8.2 GPIO寄存器描述
3.8.3 GPIO使用示例
3.9 嵌套向量中断控制器NVIC
3.9.1 中断源
3.9.2 向量表的重新映射
3.9.3 寄存器描述
3.10 定时器
3.10.1 通用定时器0/1/2/
3.10.2 重复中断定时器RIT
3.10.3 看门狗定时器WDT
3.10.4 系统节拍定时器
3.11 调试接口
3.11.1 概述
3.11.2 调试端口引脚
3.11.3 调试接口电路
3.11.4 调试注意事项
习 题
第4章 LPC1700系列微处理器
高级接口
4.1 通用异步收发器UART
4.1.1 概述
4.1.2 UART接口引脚与配置
4.1.3 UART接口电路设计
4.1.4 寄存器功能描述
4.1.5 UART基本操作
4.1.6 UART程序示例
4.2 串行总线接口SPI和I2C
4.2.1 SPI接口
4.2.2 I2C接口
4.3 脉宽调制器PWM
4.3.1 概述
4.3.2 引脚描述和配置
4.3.3 寄存器描述
4.3.4 PWM波形举例
4.3.5 PWM程序示例
4.4 正交编码接口QEI
4.4.1 QEI简介
4.4.2 功能概述
4.4.3 引脚描述和配置
4.4.4 寄存器描述
4.4.5 QEI基本操作
4.5 模数转换器和数模转换器
4.5.1 模数转换器
4.5.2 数模转换器
4.6 USB总线接口
4.6.1 USB设备控制器
4.6.2 USB主机控制器
4.6.3 USB OTG控制器
4.6.4 USB固件库
习题
第5章 基于CMSIS接口标准
软件设计
5.1 CMSIS标准简介
5.2 CMSIS代码规范
5.3 CMSIS文件结构
5.4 CMSIS例子程序
习题
附录A Cortex-M3指令集
A.1 指令集汇总
A.2 内在函数
附录B 缩写
附录C 术语表
参考文献