“单片机与嵌入式系统”是电子信息类、自动化类等专业的核心课程,该课程面向嵌入式系统设计师工作岗位,目的是为社会培养嵌入式智能产品设计、分析、调试与创新能力的高素质技术技能型人才。
嵌入式计算机系统简称为嵌入式系统,其概念最初源于传统测控系统对计算机的需求。随着以微处理器(MPU)为内核的微控制器(MCU)制造技术的不断进步,计算机领域在通用计算机系统与嵌入式计算机系统这两大分支分别得以发展。通用计算机已经在科学计算、通信、日常生活等领域产生重要影响。在后PC时代,嵌入式系统的广阔应用是计算机发展的重要特征。一般来说,嵌入式系统的应用范围可以粗略分为两大类:一类是电子系统的智能化(如工业控制、汽车电子、数据采集、测控系统、家用电器、现代农业、嵌入式人工智能及物联网应用等),这类应用也被称为微控制器(MCU)领域。另一类是计算机应用的延伸(如平板计算机、手机、电子图书等),这类应用也被称为应用处理器(MAP)领域。在ARM系列产品中,ARM Cortex-M系列与ARM Cortex-R系列适用于电子系统的智能化类应用,即微控制器领域;ARM Cortex-A系列适用于计算机应用的延伸,即应用处理器领域。不论如何分类,嵌入式系统的技术基础是不变的,即要完成一个嵌入式系统产品的设计,需要掌握硬件、软件及行业领域相关知识。但是,随着嵌入式系统中软件规模的日益增大,对嵌入式底层驱动软件的封装也提出了更高的要求,可复用性与可移植性受到特别的关注,嵌入式软硬件构件化开发方法逐步被业界所重视。
为了实现嵌入式系统设计的可移植性和可复用性,嵌入式硬件和嵌入式软件均采用构件化的设计思想,即对嵌入式硬件和嵌入式软件进行封装,供系统设计者调用,并倡导嵌入式软件分层设计的理念,以降低嵌入式技术的教学难度和开发难度,为因材施教提供有效可行的途径,有效突出学生的学习主体地位,充分调动学生的学习积极性,使学生具有一定的创新意识和创新能力。
本书在编写过程中,坚持以学习者为中心的教学理念,按照“以学生为中心、学习成果为导向、促进自主学习”的思路进行教材开发设计,充分体现“做中学、学中做”“教、学、做一体化”等教育教学特色,使学校教学过程与企业的生产过程相对接。以实际、实用、必需、够用为原则,本书采用项目化教学方式,以“项目、任务、活动”理实一体教学模式呈现教学内容。
本书使用意法半导体公司的ARM Cortex-M4内核的STM32L431微控制器为蓝本,阐述嵌入式硬件构件和嵌入式软件构件的设计方法和使用方法。需要特别说明的是,本书以知识要素为基本立足点设计芯片底层驱动,使得应用程序与芯片无关,具有通用嵌入式计算机(GEC)性质。按照循序渐进、搭积木的设计思想,共设计了10个项目。最后可根据教学需要,选择部分项目或全部项目进行综合应用系统设计和课程考核。
本书具有以下特点。
1)把握通用知识与芯片相关知识之间的平衡。书中对于嵌入式“通用知识”的基本原理,以应用为立足点,进行语言简洁、逻辑清晰的阐述,同时注意与芯片相关知识之间的衔接,使读者在理解基本原理的基础上,学习芯片应用的设计,同时反过来加深对通用知识的理解。
2)把握硬件与软件的关系。嵌入式系统是软件与硬件的综合体,嵌入式系统设计是一个软件与硬件协同设计的工程,不能像通用计算机那样,把软件、硬件完全分开来看。特别是对电子系统智能化嵌入式应用来说,没有对硬件的理解就不可能设计好嵌入式软件,同样,没有对软件的理解也不可能设计好嵌入式硬件。因此,本书注重把握硬件知识与软件知识之间的关系。
3)对底层驱动进行构件化封装。书中对每个模块均给出根据嵌入式软件工程基本原则及构件化封装要求编制的底层驱动程序,同时给出详细、规范的注释及对外接口,为实际应用提供底层构件,方便移植与复用,从而为读者进行实际项目开发节省大量时间。
4)设计合理的测试用例。书中所有源程序均经测试通过,并在本书的在线教学资源中提供测试用例,避免了因例程的书写或固有错误给读者带来烦恼。这些测试用例也为读者验证与理解带来方便。
5)在线教学资源提供了所有模块完整的底层驱动构件化封装程序与测试用例、芯片资料、使用文档、硬件说明等,还制作了课件,在线教学资源的版本将会适时更新。
本书由王宜怀、索明何和王玉丽编著。王宜怀负责全书的策划、内容安排、案例选取和统稿工作。
本书在编写过程中,得到了意法半导体(ST)大学计划的丁晓磊、ARM中国教育生态部的王梦馨、南京沁恒微电子的杨勇及刘帅的热心帮助和指导,在此一并表示衷心的感谢。
由于编者水平有限,疏漏之处在所难免,恳请广大专家和读者提出宝贵的修正意见和建议。
编者