前言 嵌入式系统在人工智能、无人驾驶、机器人、无人机、汽车电子、航空航天、海洋监测、智能监控、智慧健康等领域得到了广泛的应用。STM32作为Arm的一个典型系列,以其较高的性能和优越的性价比,毫无疑问地成为32位单片机市场的主流。把STM32 引入大学的培养体系,已经成为高校广大师生的普遍共识并被付诸实践。 32位微控制器时代已经到来。32位微控制器性能优越、功能强大但结构复杂,使很多嵌入式工程师望而却步。读者对一本好的嵌入式系统入门教材的需求越来越迫切。 意法半导体(ST)公司自推出Arm CortexM3内核的STM32F1系列微控制器之后,又推出 Arm CortexM4内核的STM32F4系列微控制器。STM32F1最高主频为72MHz, STM32F4最高主频为168MHz; STM32F4具有单精度浮点运算单元,STM32F1没有浮点运算单元; STM32F4具备增强的DSP指令集; STM32F4执行16位DSP指令的时间只有STM32F1的30%~70%,而执行32位DSP指令的时间只有STM32F1的25%~60%。 Arm CortexM4是采用哈佛结构、拥有独立指令总线和数据总线的32位处理器内核,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统),为系统资源的分配和管理提供了很好的支持。 正因为如此,基于Arm CortexM4的STM32系列MCU以其高性能、低功耗、高可靠性和低价格的特点,逐渐成为高校师生与工程师学习和使用的主要MCU类型。 本书还讲述了嵌入式实时操作系统FreeRTOS。FreeRTOS是Richard Barry 于2003年发布的一款开源免费的嵌入式实时操作系统,其作为一个轻量级的实时操作系统内核,功能包括任务管理、时间管理、信号量、消息队列、内存管理、软件定时器等,可基本满足较小系统的需要。 因此,本书以ST公司基于32位Arm内核的STM32F407为背景机型,介绍嵌入式系统原理与应用。由于STM32的网上资源非常丰富,因此便于读者学习参考。 本书的特点如下。 (1) 采用流行的STM32F407系列嵌入式微控制器讲述嵌入式系统原理与应用实例。 (2) 讲述应用广泛的嵌入式实时操作系统FreeRTOS。 (3) 内容精练、图文并茂、循序渐进、重点突出。 (4) 不讲述烦琐的STM32寄存器,重点讲述STM32的库函数。 (5) 以理论为基础,以应用为主导,章节内容前后安排逻辑性强、层次分明、易教易学。 (6) 结合国内主流硬件开发板(野火STM32开发板F407霸天虎),书中给出了各个外设模块的硬件设计和软件设计实例,其代码采用STM32F4标准库函数编程,且在开发板上调试通过,并通过TFT LCD或串口调试助手查看调试结果,可以很好地锻炼学生的硬件理解能力和软件编程能力,起到举一反三的效果。 (7) 由于所选开发板的价格在500元左右,且可以在网上轻易买到,方便学校实验教学。 本书共13章。第1章对嵌入式系统进行概述,介绍嵌入式系统的组成、嵌入式系统的软件、 嵌入式系统的应用领域和嵌入式系统的体系; 第2章讲述 嵌入式处理器,包括Arm嵌入式处理器、存储器系统、嵌入式 处理器的分类和特点; 第3章讲述STM32系列微控制器, 包括STM32微控制器 概述、STM32F407ZGT6概述及芯片内部结构、STM32F407VGT6芯片引脚和功能 以及STM32F407VGT6最小系统设计; 第4章讲述嵌入式开发环境的搭建,包括Keil MDK安装配置、Keil MDK 新工程的创建、JScope安装、JScope调试方法、CortexM4 微控制器软件接口标准(CMSIS)、STM32F407开发板的选择和STM32仿真器的选择; 第5章讲述 STM32 GPIO,包括STM32 GPIO接口概述、 STM32 GPIO功能、STM32的GPIO常用库函数、 STM32的 GPIO使用流程、STM32 GPIO输出应用实例和STM32 GPIO输入应用实例; 第6章讲述 STM32中断,包括中断概述、STM32F4中断系统、STM32F4外部中断/事件控制器 STM32F4中断系统库函数、STM32F4外部中断设计流程、STM32F4外部中断设计实例; 第7章讲述 STM32定时器,包括STM32定时器概述、基本定时器、通用定时器、STM32定时器库函数和STM32定时器应用实例; 第8章讲述 STM32 通用同步/异步收发器,包括串行通信基础、STM32的USART工作原理、STM32的USART 库函数和STM32 USART串行通信应用实例; 第9章讲述STM32 SPI串行总线,包括STM32的SPI通信原理、STM32F407 SPI串行总线的工作原理、STM32的SPI库函数和STM32的SPI应用实例; 第10章讲述 STM32 I2C串行总线,包括STM32 I2C串行总线的通信原理、STM32 I2C串行总线接口、STM32F4的I2C库函数和STM32 I2C应用实例; 第11章讲述 STM32模数转换器,包括模拟量输入通道、模拟量输入信号类型与量程自动转换、STM32F407微控制器的ADC结构、STM32F407微控制器的ADC功能、STM32的ADC库函数和STM32 ADC应用实例; 第12章讲述STM32 DMA控制器,包括STM32 DMA的基本概念、DMA的结构和主要特征、DMA的功能描述、STM32的DMA库函数和STM32 DMA应用实例; 第13章讲述 嵌入式实时操作系统FreeRTOS,包括FreeRTOS系统概述、FreeRTOS的源代码和相应官方手册获取、FreeRTOS 系统移植、FreeRTOS的文件组成、FreeRTOS的编码规则及配置和功能裁剪、FreeRTOS的任务管理、进程间通信与消息队列、信号量 和互斥量、事件组、软件定时器和FreeRTOS任务管理应用实例。 本书结合编者多年的科研和教学经验,遵循“循序渐进,理论与实践并重,共性与个性兼顾”的原则,将理论实践一体化的教学方式融入其中。书中的实例均进行了调试,开发过程用到的是目前使用最广的“野火STM32开发板F407霸天虎” 。读者也可以结合实际或手里现有的开发板开展实验,均能获得实验结果。 本书数字资源丰富,配有电子课件、程序代码、教学大纲、习题答案、试卷及答案等电子配套资源。 对本书中所引用的参考文献的作者,在此一并向他们表示真诚的感谢。由于编者水平有限,加上时间仓促,书中难免存在 不妥之处,敬请广大读者不吝指正。 编者2024年12月