前言PREFACE 2020年1月,作者出版了《ARM CortexM3嵌入式原理及应用——基于STM32F103微控制器》。该书自出版以来,被国内百余所高校选为教材,年销万余册,并先后荣获清华大学出版社畅销图书、科技类最受读者欢迎图书和苏州大学精品教材等荣誉称号,获得读者的普遍好评,令作者深受鼓舞,决定再编著一部既注重入门,又兼顾提高的嵌入式系统项目式教材。 1. 出版背景 “青山遮不住,毕竟东流去!”虽然我们已经积累了大量的经典的8位单片机(如MCS51)、16位单片机(如MSP430)的技术资料,但是复杂的指令、较低的主频、有限的存储空间、极少的片上外设,使其在面对复杂应用时,捉襟见肘,难以胜任。8位、16位单片机的应用不会就此结束,32位处理器时代已经到来。 在这个大环境下,ARM CortexM处理器轰轰烈烈地诞生了!它性能更强、功耗更低、易于使用。许多曾经只能求助于高级32位处理器或DSP的软件设计,都能在ARM CortexM处理器上跑得很快。按照ARM公司的经营策略,公司只负责设计处理器IP核,而不生产和销售具体的处理器芯片。在诸多半导体制造商中,意法半导体(ST Microelectronics)公司较早在市场上推出基于ARM CortexM内核的微控制器产品,其根据ARM CortexM内核设计生产的STM32微控制器充分发挥了低成本、低功耗、高性价比的优势,以系列化的方式推出,方便用户选择,受到了广泛的好评。在众多STM32微控制器产品中,基于ARM CortexM3内核的STM32F103微控制器和基于ARM CortexM4内核的STM32F407微控制器较为用户所了解,市场占有率很高,很多嵌入式教材也是以二者之一为蓝本进行讲解的。相比于STM32F103微控制器,STM32F407在内核、资源、外设、性能、功耗等多方面均有较大增强,而二者价格相差并不大,所以本书选择以STM32F407为背景机型进行讲解。 STM32支持的四种开发方式中的寄存器开发方式和LL库开发方式较少使用,嵌入式软件工程师往往会在标准库开发方式和HAL库开发方式之间艰难抉择。近年来,随着硬件性能逐步提升和STM32CubeMX软件的更新升级,HAL库开发方式的高效、便捷和通用性得到进一步的彰显,选择的天平逐渐倾向于HAL库开发方式。作者实践和比较了两种开发方式之后,发现HAL库开发方式较标准库开发方式可以明显减少代码量,大幅降低编程人员翻阅数据手册的频率,研发周期大幅缩短,可靠性显著提升。虽然HAL库开发方式不是完美无瑕,但利远大于弊,它是未来嵌入式开发的技术方向,也是STM32官方主推的开发方式。所以,本书介绍的软件设计是基于图形化配置工具STM32CubeMX的HAL库开发,这是当前技术主流,具有一定的前瞻性。 2. 内容简介 针对上述情况,作者根据多年的嵌入式系统教学和开发经验编写了本书,试图做到循序渐进,理论与实践并重,共性与个性兼顾,将嵌入式系统的理论知识和基于ARM CortexM4内核的STM32F407微控制器的实际开发相结合。 全书共18章,划分为以下三篇。 第一篇(第1~3章)为系统平台。第1章介绍了嵌入式系统定义、ARM内核以及基于ARM CortexM4内核的STM32微控制器; 第2章对STM32F407微控制器和开发板硬件平台各模块进行详细介绍; 第3章介绍STM32软件环境配置与使用入门。 第二篇(第4~10章)为基本外设,分别对STM32嵌入式系统最常用外设模块进行介绍。第4章讲解通用输入输出端口; 第5章讲解LED流水灯与SysTick定时器; 第6章讲解按键输入与蜂鸣器; 第7章讲解FSMC总线与双显示终端; 第8章讲解中断系统与基本应用; 第9章讲解基本定时器; 第10章讲解通用定时器。 第三篇(第11~18章)为扩展外设,分别对STM32嵌入式系统高级外设模块进行介绍。第11章讲解串行通信接口USART; 第12章讲解SPI与字库存储; 第13章讲解I2C接口与EEPROM; 第14章讲解模/数转换与光照传感器; 第15章讲解直接存储器访问; 第16章讲解数/模转换器; 第17章讲解位带操作与温湿度传感器; 第18章讲解RTC与蓝牙通信。 无论是基本外设,还是扩展外设,从第4章开始到第18章结束,每一章先对理论知识进行讲解,然后引入项目实例,给出项目实施具体步骤,项目可以在课堂完成。整个教学理论与实践一体,学中做,做中学。 3. 本书特色 (1) 以学生认知过程为导向,设计本书逻辑,组织章节内容。先硬件后软件,由浅入深,循序渐进; 遵循理论够用,重在实践,容易上手的原则,培养学习兴趣,激发学习动力。 (2) 项目引领,任务驱动,教学做一体,注重学生工程实践能力的培养。对于每个典型外设模块,在简明扼要地阐述原理的基础上,围绕其应用,以案例的形式讨论其设计精髓,并在书中给出了完整的工程案例。 (3) 传承51经典,发扬ARM长处,助推MCU升级。ARM嵌入式系统实际上是8位单片机的升级扩展,但是其高性能必然对应高复杂度。借助8位单片机共性的理念、方法和案例,有助于提升读者学习兴趣,使其轻松入门嵌入式开发。 4. 配套资源 “不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之”。学习新东西时,没有什么比实践更重要的了!为此,作者从硬件和软件两个方面为读者创建了良好的实践环境。 在硬件方面,本书设计了如下模块: ①板载CMSISDAP调试器; ②使用FSMC总线同时连接数码管和TFT LCD; ③独立按键/矩阵键盘切换电路; ④使用片外SPI Flash芯片存储中文字库。读者可直接购买本书配套开发板,也可以将本书项目移植到已有开发板,还可以自主设计开发板。 在软件方面,本书提供了配套实例的程序代码,便于读者开发验证。此外,本书还提供了教学课件、教学大纲、实验素材等教学资源。 5. 致谢 在本书的撰写过程中参阅了许多资料,在此对所参考书籍的作者表示诚挚的感谢。本书在编写过程中引用了互联网上最新资讯及报道,在此向原作者和刊发机构表示真挚的谢意,并对不能一一注明来源深表歉意。对于收集到的没有标明出处或找不到出处的共享资料,以及一些进行加工、修改后纳入本书的资料,在此郑重声明,本书内容仅用于教学,其著作权属于原作者,并向他们表示致敬和感谢。 在本书的编写过程中,作者得到了家人的理解和帮助,并且一直得到清华大学出版社盛东亮老师和钟志芳老师的关心和大力支持,清华大学出版社的工作人员也付出了辛勤的劳动,在此谨向支持和关心本书编著的家人、同仁和朋友一并致谢。 由于嵌入式技术发展日新月异,加之作者水平有限,书中难免有疏漏和不足之处,恳请广大读者批评指正。如果读者对本书有任何意见、建议和想法,或希望获取本书配套开发板的更多技术支持,请与作者联系。 作者2024年2月