前言
在经典的51单片机时代诞生了许多实用的技术书籍,覆盖了从硬件架构到软件应用的方方面面,这些作品培养了大量单片机工程师,对单片机技术的发展提供了非常大的助力。现如今,随着ARM单片机的兴起和繁荣,相关的书籍不断涌现。然而,从作者的学习经历来看,目前关于ARM单片机书籍的描述,重点还是放在参考手册和固件库上,也就是说,书中的内容直接或间接地来源于单片机原厂的参考手册或是固件库。诚然,这些知识对于单片机开发非常重要,它们是使用ARM单片机进行开发的基础。但是,随着ARM单片机的普及和开发门槛的降低,单片机工程师们对ARM技术书籍的需求远不止于此,在实践中,还有更广阔的空间需要探索。本书作者曾经也是单片机开发的初学者,经过了多年对ARM单片机的学习和实践,在不断解决问题的过程中,积累了一些心得和体会。这些源自于实践的经验,不同于手册中已有的内容,更多的是通过实验和具体的应用而进行的总结,具有比较高的实用价值,对具体的项目应用有直接的参考意义。
本书由来
提及作者学习ARM单片机的过程,就不得不聊一点飞思卡尔杯智能汽车比赛的经历。2011年,作者(其中之一)带队参加第六届“飞思卡尔”杯智能车比赛(电磁组),开始在项目中使用K60单片机,这是由飞思卡尔半导体公司推出的全球首款基于ARM CortexM4内核的单片机,在之后的几年里广为流行。
作者在参加比赛的过程中受益颇多,在明确的项目目标(更快、更稳)的驱动下,将所有相关的知识整合起来,全面地解决小车系统中的每一个具体问题,这刚好是一个完整的单片机工程师从入门到成熟的学习过程。在制作和调试小车的过程中,仅仅依赖芯片手册的信息不足以解决所有问题,更多的问题还需要搜集信息、思考、测试、再思考、再测试的反复过程才能取得最终的解决方案。这些通过实践积累下来的经验总结是最宝贵的财富。早年对开发问题的总结,也催生了撰写一本关于开发单片项目经验书籍的念头。
参加工作后,作者有幸继续使用Kinetis系列单片机的开发平台进行单片机系统软件的设计工作。作为常年工作在Kinetis微控制器底层驱动和操作系统接口层的应用工程师,本着进一步对芯片功能的使用和理解的目的,将近几年在工作岗位和项目中的技术细节整理出来。为了方便使用Kinetis产品的广大读者和应用工程师,作者对各类实际工作中看似模棱两可的功能性配置过程做了较为详细的解释,从系统上电启动的最初步骤到进入应用系统之后的环节都进行了较为详细的演示,这样做的目的是为了方便读者在遇到一些未知的故障时能够通过本书中讲解的内容快速将故障定位,从而缩短产品开发周期,为应用开发奠定基础。同时本书还介绍了嵌入式软件开发过程的一些辅助工具,通过对这些工具的了解可以帮助读者在单片机开发工作中锦上添花。
本书特色
本书从NXP Kinetis系列产品的综合介绍开始,对Kinetis芯片的一些功能细节做了较为详细的介绍。书中引用了作者团队开发和使用多年的CHK开源Kinetis产品驱动库,读者可以自行在网络上下载并使用,这些完全免费。CHK开源驱动软件库开发至今多年,在业界有着较好的口碑,可以帮助有MCU开发经验的用户几乎零时间进入Kinetis产品的应用开发工作,到目前为止,CHK软件库已经可以支持多个系列Kinetis的衍生型号开发,其他一些子型号只要稍加修改便可使用。
嵌入式软件设计入门与进阶——基于Kinetis K60/K64
由于目前市面上已经有较多关于恩智浦Kinetis系列单片机的书籍,但大多是针对入门学习者或是刚接触Kinetis单片机的工程师,着重偏向外设模块介绍,如简单的GPIO使用、点亮小灯等。再例如串口通信,只是介绍收发数据的相关寄存器,然后以打印或接收一些串口数据作为示例,强调快速见效。而本书主要面向具有一定经验的嵌入式开发者,根据作者实际的开发经验,在书中总结了一些使用Kinetis控制器进行嵌入式软件开发过程中用到的实用技术,以“第一视角”讲述一线工程师的应用心得,实用价值高。另外,本书内容绝不只限于Kinetis系列控制器,其中很多是所有嵌入式开发工程师经常碰到的问题。本书对技术点的描述深入细致,内容丰富,是一本可读性强的读物。
在内容的组织形式上,本书并未采用传统教科书式的顺序结构,而是以主题组织材料,将每个章节整理成一个个“技术小品”。每个“技术小品”相当于是一个解决问题的小故事,将相关信息放在一起说明中心问题,这种内容组织的方式直接来源于作者在项目开发过程中整理的开发笔记。这样做,对于读者而言,也可以减轻阅读压力,每阅读完一个章节,就可以了解到一个主题。对于闲暇时间有限的单片机工程师来说,这样组织内容的方式非常便于利用零星的时间进行阅读。
本书读者对象
本书主要面向有一定编程基础的嵌入式MCU工程师、高校师生、创客以及所有热爱嵌入式技术的朋友们。本书特别介绍了大量关于Kinetis系列产品的入门及应用知识,包括常用外设的编程方法、寄存器,以及飞思卡尔系列单片机一些特有的功能等,这些知识对于想了解该系列产品的朋友来说具有很好的参考价值。
特别提醒读者的是,鉴于本书完稿之时正处于飞思卡尔半导体公司和恩智浦半导体合并过程中,所以以前的“飞思卡尔Kinetis系列”在本书出版时已经更替为“恩智浦(NXP) Kinetis”系列。
CHKLIB Kinetis驱动固件库是由本书作者自行开发的针对Kinetis的底层驱动库,支持数十种Kinetis微控制器型号,使用简单并配套详细的使用例程,可以帮助用户以极短的时间入手Kinetis系列微控制器的应用编程,大大缩短开发周期,CHKLIB驱动库已经开发多年,历经时间检验,稳定可靠。它与目前NXP官方的SDK 2.0互为补充,SDK 2.0侧重与以芯片为中心,大而全的设计驱动API,而CHKinetis固件库则以应用为中心来设计驱动API,讲究实用简单,砍掉了一些不常用的外设功能。API也比官方的SDK 2.0少很多。目前,CHKinetis依然在持续更新中。读者可以前往开源中国(OS China)进行下载,地址链接如下:http://git.oschina.net/yandld/CHKLib。
本书的作者团队来自于单片机开发领域,包括面向产品的应用软件工程师以及致力于提供固件库服务的系统软件工程师,由于常年与程序代码和开发板为伍,但是作为技术书籍的作者尚显文笔生疏,书中所用描述之辞,如有不当之处恳请见谅。
仅以此书献给曾经的飞思卡尔和一代藉由“飞思卡尔”智能车比赛成长起来的年轻工程师们!
作者
2016年5月