图书前言

2004年出版的《单片机嵌入式应用的在线开发方法》一书,是为清华大学研究生精品课程“嵌入式实时操作系统与单片机应用”编写的单片机部分的教材,而嵌入式实时操作系统部分采用的是Jean J.Lanrosse所著的μC/OS-II一书。该课程强调单片机的在线开发方法,区别于使用仿真器的非在线开发方法;推荐使用源码开放的嵌入式实时操作系统μC/OS-II. 20世纪90年代初期,Lanrosse的μC/OS就是为当时世界上最流行的Motorola单片机MC68HC11编写的。进入21世纪后,采用与HC11源码兼容的、更先进的MC9S12单片机为范例便顺理成章了。S12单片机是16位机,难度介于8位与32位之间,基于研究生课程十余年之经验,使用两个32学时讲述单片机开发方法和RTOS两部分内容,还算成功。因为在清华大学电类本科教学中,我们一直使用Motorola的8位单片机,开发思路和16位机没有什么不同,加之清华大学电类本科生模拟电路、数字电路、C语言等嵌入式应用前期基础课功底较为扎实,所以在研究生课程中讲述RTOS和S12单片机就显得很轻松。然而选修嵌入式应用课程的研究生并非都是清华大学的本科生,不少来自外校,而且来自生物、医学等专业,甚至来自人文社科类专业,这些研究生相关基础课知识较欠缺,选修本课程的目的是认定这些知识对他们所在学科有所帮助。这本教材,对于这类研究生就显得有些难度了。总之,研究生水平参差不齐是该课程遇到的主要困难。

2005年,我们编撰了本科生单片机应用教材《单片机认识与实践》,以较为简单的Freescale的8位单片机S08为例,强调认识和实践,这是为了顺应教学改革改革的潮流。由于从前几年开始,清华大学本科由5年制改为4年制,课时的压缩主要体现在那些即使压缩了学时,学生仍有兴趣自学的课程上,如计算机、英语等课程。单片机类课程也压缩了学时,从必修改为选修。这一变革是正确的,由于单片机类课程是实践类课程,学生必须有兴趣动手做,才能真正学会。随着近年来国力的增强,国家在强调实践环节的同时,增大了对学生实践类课程的投入。在教育部自动化专业教学指导委员会的倡导下,辅以Freescale公司的大力赞助,从2006年开始,每年暑假都要进行一次“全国大学生飞思卡尔杯智能车竞赛”。这是最近教育部支持的9个全国大学生科技竞赛中唯一一个涉及多个学科的大学生竞赛,定位于以本科生为主的大学生。由于多方面原因,竞赛指定使用16位单片机S12而非较简单的8位单片机,于是我们那本研究生教材就成了竞赛的指定参考书。不少大学的自动化专业、汽车专业开始在本科生教学中使用S12单片机,甚至在校内举办类似的车模竞赛。那本本来定位在研究生专业基础课的教材被这些学校的本科生课程采用。此时,带协处理器的双核S12X系列单片机已经出现,并成为单片机技术发展的一大亮点。

2008年,我们将双核单片机引入非计算机专业的研究生教学,解决了研究生基础知识水平参差不齐的问题,同时编撰了《单片机应用中的双核技术》一书,由北京航空航天大学出版社出版,作为清华大学研究生精品课教材。该书讲解S12XD/E 系列双核单片机,基础较弱的研究生,弄懂一个CPU就可以了,而对于程度较高的研究生,双核单片机给了他们宽广的实践拓展空间。

同年,我们被告知,本书已被列为教育部“十一五”国家级规划教材,这本研究生精品课程教材已经使用了5年多了。列为教育部“十一五”国家级规划教材后,将会有更多的本科生使用该教材。这本书的定位将发生变化,使之更适用于电类高年级本科生教学。因此我们需要做两方面的工作,一是降低难度,使之更贴近于本科生;二是采用最新一代的单片机作为实践范例。我们不主张给本科生讲双核单片机,我们认为本科生首先应学好一个CPU,掌握应用开发的方法,通过实验和实践活动,培养和提高解决问题的能力。

我们希望理工科大学本科生的单片机应用类课程能尽量提前,这样这些本科生能在大学期间有较多的时间参与车模竞赛之类的实践活动。该教材可供大二学生使用,但此时他们并没有学过数电、模电之类的课程。因此我们增加了数字电路基础一章,用一节课讲述学习单片机开发所需要的基本数字电路知识。实践证明,掌握这些知识对于本课程入门基本够了。

我们选用S12XS系列单片机作为范例,并从第4届全国大学生智能车模竞赛开始,推荐使用S12XS单片机。S12XS单片机是在双核S12X单片机的基础上去掉协处理器内核后得到的,它保留了双核单片机中用到的很多新技术,而在复杂程度上远低于双核单片机。

本书第1章强调广泛选择单片机,强调单片机应用是个性化的,应针对不同的应用选择最合适的单片机,尽量做到系统单片化;第2章介绍单片机基础知识;第3章给出单片机基本系统设计的一般方法:从设计单片机最小硬件系统开始,利用监控程序,实现人与单片机通过串行口对话,尽快让单片机“活”起来;第4章介绍单片机指令集、汇编语言编程等;第5章中的“存储空间的扩展”部分实际上讲的是存储管理,主张以存储器为核心设计嵌入式系统解决方案;第6章通过详解异步串行通信,使读者理解人机对话机制;第7章讲如何在单片机上建立C语言程序的运行环境,以及C语言和汇编语言是如何接口的;第8章解析了一个用C语言编写的监控程序,并提供了全部源码,让读者知道这是在线开发单片机应用的最基本的方法;第9章讲解如何将μC/OS-II移植到S12X单片机上;第10章介绍单片机的通用I/O模块,如并口、同步串口、时钟产生器、周期性中断发生器以及AD变换模块的原理和使用方法;第11章介绍应用软件开发集成环境的入门知识;第12章是基本实验的实验指示书;第13章介绍单片机系统可靠性和电磁兼容方面的基本知识。

在附录A中,给出了相关开发套件及内嵌监控程序的使用方法,附录B则给出了便于用户在开发过程中查阅的指令表。

本书主要由邵贝贝、龚光华、薛涛、宫辉、曾鸣等编写。感谢侯磊、卓开阔等研究生在研制MC9S12XDP512和MC9S12XE100开发板、BDM调试工具,以及提供应用范例程序等方面做出的贡献。感谢Freescale公司对清华大学教学与科研的长期支持。

需求在增长,技术在发展,社会对人才的需求是无止境的。由于作者深感自己的知识有限,书中难免存在不当之处,敬请读者指正。关于单片机和嵌入式应用教学今后的发展,以及相关实验系统和开发工具的更新,请访问我们的网站: www.tsinghua-Freescale.com. 

作 者2009年5月于清华大学