嵌入式系统的发展确实超乎我们的想象。从早起的8位单片机,到目前主流的32位单片机,其应用已深深渗透于生产生活的各个方面。作为ARM的一个典型系列,STM32以其较高的性能和优越的性价比,毫无疑问地成为32位单片机市场的主流。把STM32引入大学的培养体系,已经成为高校广大师生的普遍共识和共同实践。
普遍都认为,基于ARM的嵌入式系统不仅难教而且难学。究其原因,无外乎三个方面:①功能多导致的问题。功能多导致系统复杂,这样给理解带来诸多困难,使得从传统的8位单片机系统转过来的学习者感觉难以适应,因为传统的8位单片机,例如51单片机,功能相对单一,结构原理相对简单。②芯片系列多导致的问题。由于基于ARM的单片机系列较多,功能、性能差异又较大,开发环境又往往不一样,尤其是与8位单片机学习者已熟悉的KEIL C差异较大,再者,由于ARM单片机出现晚,发展历史没有8位单片机长,资料积累远不如8位单片机丰富,这些都对学习者提出了挑战、形成了恐慌。③开发模式不一样导致的问题。每个ARM系列单片机往往其开发环境、开发模式是不一样的。以STM32为例,开发环境就有好几种,开发模式又有寄存器模式、固件库函数模式两种,再加上各自又可对应基于操作系统和无操作系统的形式,工程模板的配置很多初学者往往不得其要领,所有这些使得传统的单片机学习者在从8位单片机向ARM迁移的过程中,感觉信心不足,不敢轻易涉足。
作者本身是传统8位单片机的一个资深学习者和应用开发者,对上述这些感同身受、体会深厚。正因为如此,由于一个偶然的触发,让我在2014年暑假下定决心一定要破破这个邪,从而开始了长达近两年的学习和教材撰写过程,走上了一个人的朝圣之旅。
正是这不折不扣的两年学习和思考,引领我在本教材的框架构思和具体撰写中,毫无觉察地将自己设置在学习者的立场和视野上。本教材的撰写自始至终都坚定地遵循了“二二”思想。第一个“二”,即教材撰写的两个原则;第二个“二”,即教材撰写的两个特色。
教材撰写的两个原则。一是基于学习者学习的原则,而不是方便教授者教的原则;二是删繁就简、容易上手的原则,对传统读者感觉恐慌的部分,围绕应用和实践,采取够用、适用的方式,将其简化,降低学习恐惧,对诸如工程模板配置等问题又往往从根本上、从本质上阐述到位,使学习者真正理解为什么要这样做,从而避免云里雾里、一知半解,实现得心应手、运用自如。
教材撰写的两个特色。一是围绕学习者学习,二是全案例驱动。具体地说,就是完全站在学习者学习的角度,设计整个教材的逻辑关系,组织每个章节的内容体系,在简明扼要地阐述STM32常用的每一个典型外设模块的原理的基础上,围绕其应用,均以一个以上完整案例的形式讨论其设计精髓,并在教材的最后给出了一个完整的工程案例,所有这些案例的硬件和软件完全公开、毫无保留,因此十分有利于学习者学习和模仿。大量的教学实践表明,模仿是学习单片机最为成功的一种方式之一,它不仅可以让学习产生成就感,而且可以较快地激发学习兴趣和动力。
本教材的第一部分讨论了怎么学STM32的问题。分别从学习STM32的基础要求、STM32的基本架构和大致原理、学习STM32的基本方法、学STM32需要哪些工具或平台等几个方面加以阐述。
教材的第二部分围绕一个GPIO输出的简单案例,讨论了STM32应用开发所必需的开发环境配置(包括模板的建立)、程序的下载与调试、STM32程序开发的三种模式等问题。
教材的其余部分,分别通过一个及以上的完整案例,讨论了STM32中最为典型的外设与功能模块,即GPIO输入输出、延时的实现(延时函数、SysTick、定时器中断)、TIMER与PWM、USART、基于液晶和按键的人机界面、I2C与SPI、A/D、D/A、DMA、中断等的工作原理、应用设计、程序实现。
教材的最后部分,讨论了一个基于线性CCD路径识别的综合性工程案例。这个案例帮助学习者进一步建立模块化思想,提高设计与开发STM32的综合应用系统的能力与信心。
本教材的所有案例均经过作者精心设计并一一实验验证。所有案例的功能要求完整、注释完整、代码完整,真正做到了全公开、全透明、无保留。
一点建议:从学习入门和一般应用的角度,我倾向于不要先花很多精力去学嵌入式实时操作系统(例如μC/OS),原因有二:一方面,因其体系和概念过于复杂、抽象,初学者难以驾驭,学习起来会非常困难,学习效率会异常低下,这样反而影响最重要的最根本的内容的学习,可能会使原本不足的学习兴趣和动力出现“断崖式”下降;另一方面,对于一般的应用,多数是不需要基于操作系统的,况且,多数观点认为STM32并不十分适合嵌入操作系统。
教材的编写是一个艰难和孤独的过程,一本好的教材的出版更是需要心无旁骛、摒弃杂念。在整整一年的撰写和实验验证过程中,我更加对此深信不疑。本教材绝大多数内容均为作者原创,编写风格也不同于大多数教材的模式,因为将显得复杂的原理分解至各个功能模块去阐述和讨论,因此较好地迎合了学习者的学习规律。可以不自谦地说,这是一本真正意义上以学习产出(OBE)为导向的教材。
本教材得到了绍兴文理学院浙江省新兴特色专业自动化专业建设项目经费的资助,是2015年绍兴市重点建设教材。
本教材由绍兴文理学院沈红卫教授、任沙浦副教授、朱敏杰讲师、卢雪萍讲师,浙江工业职业技术学院杨亦红讲师等共同完成,绍兴文理学院自动化专业13级项烨雯、12级陈剑泓等同学参与了部分图表的绘制。在教材的编写过程中,参阅了许多资料,在此对本教材参考资料的作者表示诚挚感谢,对不能一一标明来源的资料的作者表示真诚的歉意和敬意。对直接、间接为本教材出版倾注智慧、付出心力、提供帮助的所有人,我都心怀满满的感谢!
由于水平所限,书中难免存在错误和不周之处,恳请同行专家和读者不吝指正。
沈红卫
于绍兴风则江边
2017年5月20日