前言
意法半导体公司(ST)作为第一家与Arm公司合作正式出品Cortex-M3内核微控制器的半导体器件公司,于2007年推出STM32F1系列微控制器芯片。此后十余年,以STM32为代表的Cortex-M内核微控制器逐渐在全球通用32位微控制器市场占据了主导地位,并不断向下侵蚀了8位单片机的市场。
为了适应微控制器市场的这一发展趋势,深圳职业技术学院电子信息工程技术专业在2012年开设了以STM32微控制器为学习对象的“嵌入式系统应用”课程。毫无疑问,微控制器相关课程是高职电子类专业教学计划的重要内容,目前深圳职业技术学院电子信息工程技术专业设置的微控制器相关课程体系如下表所示。
在学校实际教学以及与兄弟院校的交流过程中,对于以上课程体系的设置存在一定争议。有观点认为,既然目前51单片机的市场空间已经大大萎缩,不如直接将STM32作为微控制器教学的入门课程。
针对此观点,我校通过社团选修课的形式进行了积极尝试,发现即使是选拔成绩较好、具有较高学习热情的学生,也很难直接从STM32入手进行微控制器内容的学习。
经过调查和分析,我们发现造成学习困难的原因主要有两个:第一,STM32微控制器本身内部结构比较复杂,学生感到难以理解;第二,基于STM32的嵌入式编程涉及的C语言知识点过多,学生在有限的课时内难以全面掌握。
另外,经过市场调研,我们发现虽然51单片机作为通用处理器的市场空间已大为压缩,但是在很多追求性价比的专用控制器上,51单片机仍旧占据着非常大的市场份额。
基于以上事实,我们认为51单片机的教学在高职电子类专业整个微控制器课程体系中仍是不可或缺的。在一个简单结构上先进行微控制器的学习,并以此来掌握C语言编程的基础知识是比较容易让学生接受的。
由此我们明确了STM32课程在整个微控制器课程教学体系中的定位,就是在“基于51单片机C语言编程”课程的基础上,使学生具备面对复杂对象的嵌入式C语言编程能力。
结合高职电子类专业学生的实际情况,我们针对本书的内容设计确定了以下原则。
1. 以应用为中心,有所为有所不为。不纠结于STM32微控制器的原理细节,不在书中简单复制和堆砌STM32微控制器的知识点,而是注重学生的快速入门和实际编程能力的培养。
2. 在具备基本C语言编程能力的前提下,着重加强在基于STM32的嵌入式C语言编程中常用的宏指令、结构体、指针等内容的学习。
3. 强化编程规范的学习,注重学生良好编程习惯和编程风格的养成。
4. 教学项目的内容编排落实在一个具体的“帆板角度测量与控制装置”上,此装置以全国大学生电子设计竞赛的赛题为蓝本,将STM32目标板作为整个装置的控制核心,尽可能将STM32微控制器的编程落实到直观具体的控制对象上,以提高学生的学习兴趣,明确课程的学习目的。
5. 考虑到一部分不方便使用“帆板角度测量与控制装置”进行实践的读者,本书所有教学项目都设计为可以独立在STM32目标板上完成。
6. 教学项目的内容编排除了关注STM32微控制器外设的编程,还根据实际应用的需求,加入了彩色LCD显示、Wi-Fi串口模块、物联网云平台的使用等内容。
7. 在大部分教学项目结束时,都给出了相应拓展项目的要求和提示。设置拓展项目的目的一方面是为了巩固学习效果,另一方面是在实施过程中找出问题,为后续项目的学习做铺垫。
本书分为基础篇和应用篇两大部分,教材内容按照基础篇的专题介绍和应用篇的实训项目展开,但并不意味着实际教学需要严格按照教材目录的编排顺序。在课时有限的情况下,可以直接依托实训项目展开教学,每个项目的内容已经足以支撑教学的进行(项目中的一些知识点是对前面专题内容的延伸,如实训项目1中关于STM32标准外设库的精简结构介绍)。而基础篇的专题可以有选择地穿插在实训项目的教学中,下表列出了推荐的教学顺序(共计64课时)。
关于本书教学对象的选择有两个问题需要做出说明。
1. 为什么选择STM32F103系列芯片?
自从2007年ST公司推出第一款Cortex-M3内核的STM32F1xx微控制器至今已逾十年,虽然其后ST公司也陆续推出了基于Cortex-M4内核的STM32F4xx微控制器和基于Cortex-M7内核的STM32F7xx微控制器,但是从性价比的角度来看,STM32F1xx微控制器仍然是市场的绝对主流,目前仍不断有新型号推出。在可预见的相当长一段时间内,只要对终端设备的运算能力需求没有本质性的提高,其主流地位仍将持续。
2. 为什么是标准外设库而非HAL库?
使用外设驱动函数库进行编程是STM32微控制器编程非常重要的特色,外设驱动函数库也从标准外设库发展到了更为抽象化并融入了面向对象思维的HAL库。但是从企业产品研发的惯性来看,占据市场主流地位的STM32F1xx和STM32F4xx微控制器仍然普遍使用标准外设库进行编程,这也是本书选用标准外设库而非HAL库进行教学的主要原因。
本书的适用对象为具备基本单片机和C语言编程知识的高职院校电子与控制类专业学生。
本书由孙光担任主编,肖迎春、曾启明担任副主编,王静霞担任主审,曾日扬、李坚等为本书实训项目的完善做出了重要贡献,在此一并感谢。