描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302527053丛书名: 清华开发者书库
其一,公布了基于LPC845微控制器为核心的开源硬件平台,对嵌入式硬件开发具有颇强的指导作用。
其二,全书工程实例丰富,基于EWARM平台通过完整的工程实例详细讲述了函数级别与任务级别的程序设计方法,对于嵌入式系统应用软件开发具有颇强的指导意义。
其三,结合LPC845硬件平台,详细讲述了嵌入式实时操作系统μC/OS-III的任务管理和系统组件应用方法,对学习和应用μC/OS-III具有良好的可借鉴性。
第一篇LPC84X典型硬件系统与芯片级软件设计
第1章ARM CortexM0 内核
1.1ARM CortexM0 内核特点
1.2ARM CortexM0 内核架构
1.3ARM CortexM0 存储器配置
1.4ARM CortexM0 内核寄存器
1.4.1内核寄存器
1.4.2系统控制寄存器
1.5SysTick定时器
1.6CortexM0 异常
1.7嵌套向量中断控制器
1.8本章小结
第2章LPC84X微控制器
2.1LPC845微控制器特点与引脚配置
2.2LPC845微控制器内部结构
2.3LPC845存储器配置
2.4LPC845 NVIC中断
2.5I/O口配置IOCON
2.6通用目的输入/输出口GPIO
2.7系统配置模块SYSCON
2.8本章小结
第3章LPC845典型硬件平台
3.1LPC845核心电路
3.2电源电路
3.3LED驱动电路与蜂鸣器驱动电路
3.4串口通信电路
3.5用户按键电路、用户接口扩展电路和ADC电路
3.6DS18B20电路
3.7ZLG7289B电路
3.8SWD、ISP和复位电路
3.9LCD屏与电阻式触摸屏接口电路
3.10存储器电路
3.11声码器电路
3.12本章小结
第4章LED灯与蜂鸣器控制
4.1LED灯控制
4.1.1LPC845 GPIO口读写访问
4.1.2Keil MDK工程框架
4.2LPC845异常管理
4.2.1LPC845异常
4.2.2LED灯闪烁工程
4.3NVIC中断管理
4.3.1多速率定时器MRT
4.3.2MRT定时器中断实例
4.4蜂鸣器工作原理
4.5LPC845外部中断
4.5.1外部中断与模式匹配工作原理
4.5.2LPC845外部中断实例
4.5.3LPC845模式匹配实例
4.6本章小结
第5章按键与数码管显示
5.1ZLG7289B工作原理
5.2DS18B20工作原理
5.3按键与数码管实例
5.4本章小结
第6章串口通信与声码器
6.1串口通信
6.1.1LPC845串口工作原理
6.1.2串口通信实例
6.2声码器
6.2.1声码器工作原理
6.2.2声码器实例
6.3本章小结
第7章ADC与存储器访问
7.1LPC845微控制器ADC
7.1.1ADC工作原理
7.1.2ADC工程实例
7.2AT24C128存储器
7.2.1AT24C128访问方法
7.2.2AT24C128访问实例
7.3W25Q64存储器
7.3.1W25Q64存储器访问方法
7.3.2LPC845微控制器SPI模块
7.3.3W25Q64访问实例
7.4本章小结
第8章触摸屏与LCD屏
8.1电阻式触摸屏驱动原理
8.2电阻式触摸屏实例
8.3LCD屏驱动原理
8.4LCD屏实例
8.5本章小结
第二篇嵌入式实时操作系统μC/OSⅡ
第9章μC/OSⅡ系统与移植
9.1μC/OSⅡ系统移植
9.2μC/OSⅡ系统结构与配置
9.3μC/OSⅡ系统任务
9.3.1空闲任务
9.3.2统计任务
9.3.3定时器任务
9.4本章小结
第10章μC/OSⅡ任务管理
10.1μC/OSⅡ用户任务
10.2μC/OSⅡ多任务工程实例
10.3统计任务实例
10.4系统定时器
10.5本章小结
第11章信号量与互斥信号量
11.1μC/OSⅡ信号量
11.2μC/OSⅡ互斥信号量
11.3信号量与互斥信号量实例
11.4本章小结
第12章消息邮箱与消息队列
12.1μC/OSⅡ消息邮箱
12.2μC/OSⅡ消息队列
12.3消息邮箱与消息队列实例
12.4本章小结
第三篇嵌入式实时操作系统μC/OSⅢ
第13章μC/OSⅢ系统与移植
13.1μC/OSⅢ发展历程
13.2μC/OSⅢ特点
13.3μC/OSⅢ应用领域
13.4μC/OSⅢ系统组成
13.4.1μC/OSⅢ配置文件
13.4.2μC/OSⅢ内核文件
13.5μC/OSⅢ自定义数据类型
13.6μC/OSⅢ移植
13.7本章小结
第14章μC/OSⅢ任务管理
14.1用户任务
14.1.1任务堆栈与优先级
14.1.2任务控制块
14.1.3任务工作状态
14.1.4用户任务创建过程
14.2多任务工程实例
14.3统计任务
14.4定时器任务
14.5本章小结
第15章信号量、任务信号量和互斥信号量
15.1信号量
15.1.1信号量工作方式
15.1.2信号量实例
15.2任务信号量
15.2.1任务信号量工作方式
15.2.2任务信号量实例
15.3互斥信号量
15.3.1互斥信号量工作方式
15.3.2互斥信号量实例
15.4本章小结
第16章消息队列与任务消息队列
16.1消息队列
16.1.1消息队列工作方式
16.1.2消息队列实例
16.2任务消息队列
16.2.1任务消息队列工作方式
16.2.2任务消息队列实例
16.3本章小结
附录A文件my25q64.c
附录B工程项目索引
参考文献
物联网技术与互联网 技术的迅猛发展,促使电子设计与智能控制领域发生了一次新的技术革命,这场技术革命的典型特征在于ARM微处理器和微控制器的普及应用及嵌入式实时操作系统(ERTOS)的普及应用。国内各高等院校与时俱进,在电子通信与智能控制等相关专业开设了ARM与ERTOS方面的多门课程,以培养高质量的嵌入式技术工程人员。为了适应高等院校新技术的教学需要,同时作为清华大学出版社“开发者书库”系列教材的出版计划之一,编写了《ARM嵌入式微控制器原理与应用——基于CortexM0 内核LPC84X与μC/OSⅢ操作系统》。本书涵盖了ARM CortexM0 极低功耗微控制器LPC84X的设计与应用技术以及ERTOS系统μC/OSⅡ/Ⅲ的实战应用技术。
本书出版一年以来,受到了国内广大师生和嵌入式爱好者的喜爱,在此作者表示由衷的感谢。在过去的一年里,收到了大量读者的宝贵反馈意见,同时结合在物联网专业本科和研究生教学中遇到的问题,修订了本书第1版中出现的一些小问题。特别是由于Keil MDK最新版开发软件中芯片支撑库结构的大幅调整,使得本书原版中全部例程均需作重大修改才能运行在新版Keil MDK下。在这种情况下,对原书中的工程例程进行了全面的修订,形成了本书的第2版。同时,基于IAR EWARM开发环境,也编写了以LPC84X与ERTOS应用为核心的嵌入式教材《ARM CortexM0 嵌入式微控制器原理与应用——基于LPC84X、IAR EWARM与μC/OSⅢ操作系统》,即将由清华大学出版社出版,该书更适合那些习惯于借助EWARM进行嵌入式开发的教研人员。
本书第2版与第1版在内容安排上相同,同样具有概念表述准确、硬件方案开源、工程代码完备、应用实例丰富等特点,适用于课内教学与课外实验相结合的教学方法,也适用于结合MOOC技术和微课技术进行新型教学范式改革,同样适用于结合电子设计大赛进行赛课结合教学。本书配套的ARM学习电路板可以在教学过程中设计制作,可极大地提高本书的学习成就感和学习乐趣。对于本科二年级学生,适用内容为根据第3章内容制作ARM学习板和第1~4章; 对于本科三年级学生,根据学习基础可选用第1~8章或第1~12章; 对于研究生,适用第9~16章。结合作者的教学经验,针对本科三年级学生,本书的课内教学宜为32学时,实验教学不少于32学时,相关的开放实验学时为64~96学时。
本书由江西省学位与研究生教育教学改革研究项目(编号: JXYJG2018074)资助出版,特此感谢。同时,感谢恩智浦(NXP)中国公司辛华峰经理对本书编写的关心与支持; 感谢北京博创智联科技有限公司陆海军总经理对本书编写的关心与支持; 感谢广州天嵌计算机科技有限公司梁传智总经理对本书编写的关心与支持; 感谢清华大学出版社赵凯编辑的辛勤工作; 感谢我的爱人贾晓天老师在资料检索和LPC845学习板焊装调试方面所做的大量工作; 感谢阅读了作者已出版的教材并反馈了宝贵意见的读者们。本书的编写通俗易懂,其自学门槛较以往的教材大大降低。
由于作者水平有限,书中难免会有纰漏之处,敬请同行专家和读者朋友批评指正(联系方式: [email protected])。
张勇2019年5月
前言
当前,ARM微控制器正在逐步替代传统8051架构单片机而成为嵌入式系统的核心控制器。2010年以后,ARM公司主推Cortex系列内核,Cortex系列分为R系列、A系列和M系列,其中,A系列是高性能内核,用于基于Android操作系统的智能手机和平板电脑,支持ARM、Thumb和Thumb2指令集; R系列为微处理器内核,支持ARM、Thumb和Thumb2指令集; M系列为低功耗微控制器内核,仅支持Thumb2指令集,诞生于2004年,最早推出的内核为CortexM3,目前有CortexM0、M0 、M1、M3、M4和M7等,用于支持快速中断的嵌入式实时应用系统中。在Cortex系列中,M系列芯片的应用量最大,每年的应用量为几十亿块。
在CortexM系列中,M0和M0 内核都是极低功耗内核,M0 内核的功耗比M0内核更低(ARM公司公布的功耗数据为11.2μW/MHz),被誉为全球功耗最低的微控制器内核,主要应用在控制和检测领域,涵盖了传统8051单片机的应用领域,比传统8051单片机在处理速度、功耗、片上外设灵活多样性、中断数量与中断反应能力、编程与调试等诸多方面都有更大优势,M0 内核的代表芯片如NXP公司的LPC845微控制器。
基于ARM CortexM0 微控制器的软件开发有两种方式,即传统的芯片级别的应用软件开发和加载嵌入式实时操作系统的应用软件开发。芯片级别的应用软件开发方式直接使用C语言函数管理硬件外设驱动和实现用户功能,称之为面向函数的程序设计方式; 加载嵌入式实时操作系统的应用软件开发使用嵌入式操作系统管理硬件外设和存储资源,借助于用户任务实现用户功能,称之为面向任务的程序设计方式。由于CortexM0 微控制器片内RAM空间丰富,一般在8KB以上,适宜加载嵌入式实时操作系统(RTOS)μC/OSⅡ或μC/OSⅢ。在CortexM0 微控制器上加载了RTOS后,将显著加速项目的开发进度。
本书主要以CortexM0 内核LPC845微控制器为例,在介绍了CortexM0 内核组成原理和LPC84X微控制器芯片结构后,详细介绍了LPC845典型硬件系统及其片上外设的驱动方法,基于面向函数的程序设计方法介绍了LED灯、蜂鸣器、按键、数码管、温度显示(DS18B20)、串口通信、模数转换器(ADC)、存储器访问、LCD屏显示和触摸屏输入等外设驱动程序设计技术; 然后,详细介绍了嵌入式实时操作系统μC/OSⅡ和μC/OSⅢ在LPC845微控制器上的移植与应用技术,包括用户任务、信号量与互斥信号量、消息邮箱与消息队列等组件应用程序设计方法,重点在于阐述面向任务的程序设计方法及其优越性。
本书讲义经过多名教师的使用,理论学时宜为32学时,实验学时为32学时。建议讲述内容为第1~12章(第一篇与第二篇),选学内容为第13~16章(第三篇),按书中章节顺序讲述。作者巧妙地组织了书中的全部实例,使得全部实例代码均是完整的。因此,要求读者必须在掌握了前面章节实例的基础上,才能学习后面章节的实例。对于自学本书的嵌入式爱好者而言,要求至少具有数字电路、模拟电路、C语言程序设计等课程的基础知识,并建议使用LPC845学习板辅助学习,以增加学习乐趣。
本书具有以下三个方面的特色:
1. 公布了基于LPC845微控制器为核心的开源硬件平台,对嵌入式硬件开发具有很强的指导作用。
2. 全书工程实例丰富,通过完整的工程实例详细讲述了函数级别与任务级别的程序设计方法,对于嵌入式系统应用软件开发具有颇强的指导意义。
3. 结合LPC845硬件平台,详细讲述了嵌入式实时操作系统μC/OSⅡ/Ⅲ的任务管理和系统组件应用方法,对学习和应用μC/OSⅡ/Ⅲ具有良好的可借鉴性。
本书由江西省学位与研究生教育教学改革研究项目(编号: JXYJG2018074)资助出版,特此感谢。同时,感谢恩智浦(NXP)中国公司辛华峰经理对本书编写的关心与支持; 感谢北京博创智联科技有限公司陆海军总经理对本书编写的关心与支持; 感谢广州天嵌计算机科技有限公司梁传智总经理对本书编写的关心与支持; 感谢清华大学出版社的辛勤工作; 感谢我的爱人贾晓天在资料检索和LPC845学习板焊装调试方面所做的大量工作; 感谢阅读了作者已出版的教材并反馈了宝贵意见的读者们。本书的编写通俗易懂,其自学门槛较以往的教材大大降低。
由于作者水平有限,书中难免会有纰漏之处,敬请同行专家和读者朋友批评指正(联系方式: [email protected])。
免责声明: 知识的发展和科技的进步是多元的。本书内容上广泛引用的知识点均罗列于参考文献中,主要为LPC845用户手册、LPC845芯片手册、CortexM0 技术手册、嵌入式实时操作系统μC/OSⅡ/Ⅲ、Keil MDK集成开发环境、ULINK2或JLINK仿真资料和Altium Designer软件等内容,所有这些引用内容的知识产权归相关公司所有。本书内容仅用于教学目的,旨在推广ARM CortexM0 内核LPC845微控制器、嵌入式实时操作系统μC/OSⅡ/Ⅲ和Keil MDK集成开发环境等,禁止任何单位和个人摘抄或扩充本书内容用于出版发行,严禁将本书内容用于商业场合。
张勇
2018年4月于江西财经大学枫林园
LPC845典型硬件平台
第3章LPC845典型硬件平台
本章将介绍LPC845硬件开发平台及其电路原理图。LPC845开发平台包括一套LPC845学习板、一台计算机、一台ULINK2或JLink V8仿真器、一根USB转串口线和一个 5V电源适配器。LPC845学习板是硬件开源的电路板,如图31所示。
图31LPC845学习板
本章将首先介绍图31所示LPC845学习板的电路设计原理,本书后续章节的程序设计均基于该学习板。LPC845学习板实现了以下功能:
(1) 集成电源指示LED灯;
(2) 支持在系统编程(ISP)功能;
(3) 具有外部复位按键;
(4) 具有1个串口,可与计算机串口相连;
(5) 支持SWD串行仿真调试;
(6) 具有2个与GPIO口直接相连的用户按键输入;
(7) 具有3个GPIO口驱动的LED灯和1个蜂鸣器;
(8) 具有ZLG7289B芯片驱动的8个LED灯、16个按键和1个四合一七段数码管(带时间显示);
(9) 具有1个DS18B20温度传感器;
(10) 具有1个240×320点阵彩色TFT型LCD屏,带有电阻式触摸屏;
(11) 支持1个ADC输入口;
(12) 具有1个128KB的EEPROM存储器AT24C128;
(13) 具有1个64MB的Flash存储器W25Q64;
(14) 具有SYN6288声码器;
(15) 扩展了4个用户I/O口;
(16) 5V单电源供电。
3.1LPC845核心电路
LPC845学习板上与LPC845芯片直接相连的电路部分称为核心电路,如图32所示。
图32LPC845核心电路
在设计LPC845核心电路时,主要有以下考虑:
(1) LPC845芯片工作在3.3V电源下,第7、26、39脚接3.3V电源,第8、25、43脚接地;
(2) LPC845芯片片上ADC模块的参考电压采用3.3V,第42、52脚接3.3V参考电压源,第41、53脚接地;
(3) 使用SWD串行调试模式,第14、12脚通过网标SWDIO和SWCLK与SWD仿真接口相连接,见第3.8节;
(4) 使用了第5脚作为外部复位信号输入端;
(5) PC845芯片没有使用外部晶振,而是使用片上12MHz FRO振荡器;
(6) 支持在系统编程(ISP)且具有相应的串口,这要求LPC845芯片的PIO0_24和PIO0_25分别接串口的RXD和TXD(由FAIM决定),PIO0_12通过跳线端子接地。由图32可知,串口的RXD和TXD分别与PIO0_25和PIO0_26相连接,故需要重新配置FAIM的第1个字的第[4∶0]位为0x19,第[12∶8]位为0x1A(见参考文献[2]的第4章)。然后,才能实现ISP功能。
在图32中,LPC845的每个引脚上都有网络标号(简称网标),通过这些网标与3.2~3.11节的电路模块相连接,共同组合为完整的LPC845学习板。
评论
还没有评论。