基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

“工作导向创新实践教材”系列丛书自2007年12月出版以来,得到了许多高等本科院校和职业技术学院的关心与厚爱,在此感谢所有使用过此系列丛书的读者。

工作导向的概念,不只是一个简单的概念游戏,而是包含了深刻的哲理。学习的目的,特别是对于未来想从事工程师职业的学生而言,不仅仅是学习某一个知识体系,如单片机的知识体系或者C语言的知识体系,而是应该更进一步,是要获得如何利用这些知识去解决实际工程问题的能力,也就是动手实践能力。《论工程教育的科学主导与工程回归》(秦志强著,高等工程教育研究,2005年5期)一文中指出:抽象的“道”(知识)必须与实际的系统结合,才能发挥其作用。本书两位作者经与多位企业经理探讨,总结出图1所示的“嵌入式与电子工程师能力与素质培养体系架构图”。

图1 嵌入式与电子工程师能力与素质培养体系架构图

传统的嵌入式系统教材,基本上都是为了给学生建立知识体系,教学的结果却是不仅知识体系建立不起来,动手能力就更不用提了。工程师是为了解决问题,这种解决问题的能力只有从实践中才能获得。同时,单纯的实践也无法获得真正的能力,关键是如何从实践的经验和体会中,归纳出共性的知识,建立起知识体系,然后再将这些知识重新应用到新的实践中去。这也是当今的大学生要在未来的实际工作(无论是在企业研发还是在高校做研究)中所必须采取的学习和工作方法。因此,如何在大学三年或者四年中,掌握这种自我学习和提高的方法,是高等教育和工程教育改革的根本目的。而相应教材的编写,就是应该按照这种在未来的实际工作中学习和工作的方法来编写。做到了这一点,才是真正实践了工作导向的哲学理念:实践、归纳、总结和再实践。

因此,在使用“工作导向创新实践教材”系列丛书时,可以围绕典型的“工程对象或产品”,采用“基于工作过程”的教学法,按照“任务驱动-实践-归纳-总结-再实践”的教学模式进行教学,打破“讲课+实验”的传统教学模式,使学生在“学中做、做中学”,这样才能归纳、理解、总结出共性的知识,并建立起某个领域的知识体系。

单片机和C语言是目前嵌入式技术、计算机技术、电子信息、自动控制、工业电气、机电一体化等工程教育中最为基本,也是最为核心的课程。要学会利用单片机和C语言去解决实际问题,掌握核心知识和技能,单单靠一两本好的教材是无法实现的。学习基于ARM Cortex-M3内核的32位STM32单片机,对于单片机和C语言基础较弱的同学或者个人而言,也许会感觉比较困难。这时建议你先学习和实践本系列教材的《C51单片机应用与C语言程序设计》或《单片机嵌入式系统编程与接口设计》。掌握好编程的基本思路和方法,并了解单片机的输入和输出接口特性,然后再使用本教材学习。同时,系列教材还有《AVR单片机与小型机器人制作》和《基于ARM的嵌入式实时系统设计与实践》。对于同样的项目和课题,采用了不同的微控制器或微处理器去实现,让你能够从中掌握和理解分析问题和解决问题的根本方法,让教师和同学可以根据教学安排和自己的需要选择硬件平台。

只有学习完单片机和C语言并已经很好地掌握其中的知识点,才有可能进一步学习ARM、Linux等高级嵌入式课程。为此,在这套“工作导向创新实践教材”系列丛书中,形成从电子技术和C语言基础入门,到8位AVR或者51单片机,再到16位单片机和DSP,最后到32位ARM、Linux和Windows Embedded等高端嵌入式系统的系列化教材,让同学们可以从一个没有任何基础的学生循序渐进成长为可以进行复杂嵌入式系统设计和开发的工程师。

本教材可作为具有单片机和C语言基础的大学三年级以上学生学习用书,还可以供其他希望学习嵌入式系统设计的工程师和爱好者使用。因为是工作导向,我们以两轮小型移动机器人的构思(Conceive)、设计(Design)、实施(Implement)、运行(Operate)为典型项目,所以每套教材最好配套相应的硬件设备方能达到最佳的教学和学习效果。一些拓展项目需要用到电子元器件和传感器,详细的清单可参考本书最后的附录。

从我接触ARM开始,就非常喜欢这个嵌入式处理器,从ARM7,到ARM9和ARM11,以及后来的ARM Cortex,并切身参与和体会到ARM技术在我们身边的应用:消费电子、手机、工业测控、机器人控制、汽车电子、智能家居、物联网、无线传感器网络、医疗电子和航空航天系统。2008 年暑期,在华中科技大学召开的嵌入式技术研讨会上,时任ARM中国总裁谭军博士与笔者交流了ARM Cortex内核在MCU方面的应用情况,笔者感觉到这个内核的广阔前景,因为越来越多的MCU应用对信号采集、人机界面、通信接口提出了更高的要求。这些年越来越多地发现:大多数学习ARM处理器的学生或者个人上手较困难。个人感觉其中一个原因可能是ARM嵌入式处理器将内部总线分为不同速度总线:AHB和APB,即高速的系统总线和慢速的外设总线,其实这相当于PC主板中的北桥芯片所外接的高速系统总线和南桥芯片所接的外设总线。基于ARM Cortex内核的MCU内部结构与普通的8/16位单片机在系统结构上最大的区别就在这里。一般的单片机只有1 个系统时钟频率,而基于ARM Cortex的MCU可以给内核和不同外设模块提供不同的时钟频率,加上片内各种外设众多(集成度高),于是多了很多在普通的8/16位单片机领域中没有的内容(如DMA等),造成了难学的局面。笔者建议读者可以先尝试简单了解一下ARM7或ARM9的体系结构,毕竟Cortex内核是基于ARMv7的,而ARM7嵌入式处理器使用的是ARMv4,ARM9嵌入式处理器使用的是ARMv4或者ARMv5体系结构,ARM10嵌入式处理器使用的是ARMv5,ARM11嵌入式处理器使用的是ARMv6体系结构,因此,ARM Cortex内核要先进和复杂些。

为了降低学习难度,本书各章节在讲述具体内容时,以任务为驱动,通过“学中做、做中学”,即DIY(Do It Yourself)和LBD(Learning By Doing)的方式,介绍和讲解所需要用到的新知识、新技能,按照认识论的规律学习和掌握基于ARM Cortex-M3内核的STM32单片机技术及其应用编程。有别于数据手册式的教材,本书将ARM Cortex-M3内核介绍、STM32单片机的内部结构等原理性的内容列出在附录中,各个章节也没有繁冗的寄存器说明(参见ST公司网页上的数据手册或本书配套资料),旨在突出重点。每章都有一些读者可能在学习过程中涉及到的相关知识的讲解,希望读者能掌握一些背景知识,并且最后都有工程素质和技能归纳,启发学生进行知识的归纳和系统化。同时,附录中也对STM32单片机原理性的内容做了进一步的解释和归纳,其内容很重要,务必引起注意。

无论是大学本科还是高职院校,都可以采用本教材,具体的教学安排完全可以根据学校原有的教学计划,只是上课的方式要进行调整,不必再单独开设理论和实验课程,项目拓展课程可以根据每个学校的情况灵活设置,没有必要统一。老师可在教学过程中增加一系列竞赛环节,使整个教学和学习过程充满挑战和乐趣,提高学习效果,并培养每个学生的理论联系实际、科学主导工程的系统世界观和方法论。

另外,书中各章有关内容有意将中文和英文进行对照,同时部分表格采用英文(参考芯片英文数据手册),一是为了让读者准确知道其含义,并掌握一定的嵌入式系统专业术语;二是希望读者在编程时不要用“汉语拼音”来定义变量和函数名,养成良好的编码风格,毕竟程序是用英文写的。本书例程文件名以及代码也是如此。在帮助读者循序渐进地掌握STM32单片机原理与应用的同时,笔者也希望通过这种“任务驱动”的方式,引导读者了解如何去探索并学习新的技术,可能是你在学校里没有学到的,因为在这个技术发展迅速的世界,今后你自己可能会接触到各种最新的技术,资料是中文或英文的。这样做也是作为老师的一份责任:不仅仅授人以鱼,更要授人以“渔”。

本书的内容主要包括STM32单片机的时钟、IO、中断、定时器、串口、显示接口、ADC、DMA、RTC、电源控制、看门狗等,但没有涉及CAN、USB、uCOS移植等方面的内容(包含在高级实践教材中)。读者从本书中掌握了STM32单片机的基本原理后,加上良好的编程基础和学习方法,可以进一步学习这些内容。本书提供了基于V1.0版和V2.0版STM32固件库(FWLib)的参考例程,书中各章例程基于V1.0版固件库,但由于STM32固件库的优秀架构,使得用户应用程序的代码无须修改或少量修改,就可以在这两个版本固件库下运行。目前最新版本的固件库为V3.0版,相比V1.0版和V2.0版,V3.0版改动较大,如果希望采用3.0版的固件库,可以参考ST公司(www.st.comwww.stmicroelectronics.com.cn)的在线资料。同时,本书大量参考和引用了ARM公司(www.arm.com)的技术参考手册和ST公司的芯片数据手册,这些已经得到了ARM公司和ST公司的授权。所附配套资源包含开发工具、教学开发板硬件资料、基于V1.0版和V2.0版FWLib的各章例程源码、原版中英文数据手册、本书涉及的部分STM32微控制器寄存器说明,以及第三方软件和工具等,读者可以从华信教育资源网(http://www.hxedu.com.cnwww.szopen.cnwww.embedhr.org)免费下载。

本书由彭刚和秦志强编著,华中科技大学控制科学与工程系的研究生王中南、程小科,武汉原创嵌入式培训中心(www.embedhr.org)及深圳市鸥鹏科技有限公司(www.szopen.cn)的多位工程师参加了本书所用STM32单片机教学开发板的代码验证、电路绘制与测试等工作。还要特别感谢ST意法半导体公司的梁平经理、ARM公司的赵慧波经理和电子工业出版社的田领红编辑,给予本书的支持。

感谢华中科技大学的黄心汉教授,也是我读博士时的导师,是他引导我进入机器人这门学科。机器人是一个很好的教学与科研平台,非常适合以它为工程对象,来学习和掌握软件编程、嵌入式技术、控制技术、传感器技术、无线数据通信、机电一体化、图像处理与模式识别及人工智能等专业知识。机器人已广泛地应用于工业、医学、农业、建筑业及军事等领域,本书采用机器人作为项目实践内容,寓教于乐,兴趣为先,非常容易引起学生的兴趣和学习热情,也希望读者能对机器人技术产生浓厚的兴趣,正如电影《I, Robot》中的那样,让机器人成为人类的伙伴,实现人和机器人和谐相处的社会。

限于写作时间和作者水平,以及ST技术文档本身也在不断修订,书中难免有错误和不妥之处,敬请批评指正。作者联系邮箱:eepenggang@hotmail.com。

登楼高望,滚滚长江,时间如水,奔流不息。白驹过隙,岁月无痕,逝者如斯,不舍昼夜。伴随着微控制器技术的快速发展,生活在这个技术发展迅速的世界,科学、正确、高效、主动地学习才是积累知识和财富的法宝。

谨以此书献给我的父母!

编者

2010年11月10日