前言
近半个世纪以来,以计算机技术为代表的信息技术革命深刻地改变了人类社会的生产和生活方式。与人们“朝夕相处”的计算机也从传统意义上的PC,依靠嵌入式系统衍生出手机、数字电视、无人机、工控设备等。伴随着物联网和人工智能等新兴交叉学科的兴起,具有信息收集、处理和联网功能且体积、成本严格可控的嵌入式系统,具有很强的实践性和综合性,是新工科教育最好的“试验田”。党的二十大报告指出:“科技是第一生产力、人才是第一资源、创新是第一动力”。“新工科”作为人才培养的新理念、新模式,正成为我国大学教育的一种创新与探索。新工科教育要求全面落实“学生中心、成果导向、持续改进”的教育理念。作者正是在这一理念指导下,结合教学现状与需求编写了本书,希望为我国新工科教育略尽绵薄之力。
嵌入式系统的发展确实超乎人们的想象。从早期的8位单片机,到目前主流的32位单片机,嵌入式系统应用已渗透到生产、生活的各个方面。作为ARM单片机的一个典型系列,STM32微控制器以其较高的性能和优越的性价比,毫无疑问地成为32位单片机市场的主流。把STM32微控制器引入大学的培养体系,已经成为高校的共识和共同实践。
ARM公司基于市场需求率先推出了一款基于ARMV7架构的32位ARM Cortex-M微控制器内核。Cortex-M系列内核支持两种运行模式,即线程模式(Thread Mode)与处理模式(Handler Mode),这两种模式都有各自独立的堆栈,使得内核更加支持实时操作系统。并且Cortex-M系列内核支持Thumb-2指令集,因此基于Cortex-M系列内核的微控制器的开发和应用可以在C语言环境中完成。
Cortex-M系列内核诞生之后,意法半导体(ST)公司积极应对当今嵌入式产品市场的新要求和新挑战,推出了基于Cortex-M系列内核的STM32微控制器。它具有出色的微控制器内核和完善的系统结构设计,且具有易于开发、性能高、兼容性好、功耗低、实时处理能力和数字信号处理能力强等优点,这使得STM32微控制器一经上市就迅速占领了中低端微控制器市场。
本书以ST公司的基于32位ARM内核的STM32F103为背景机型,介绍嵌入式系统的原理与应用。
本书的特点包括以下几点:
1)基于流行的STM32F103系列微控制器介绍嵌入式系统的设计与应用。
2)内容精练、图文并茂、循序渐进、重点突出。
3)不介绍烦琐的STM32寄存器,重点讲述STM32库函数。
4)以理论为基础,以应用为主导,章节内容前后安排逻辑性强、层次分明、易教易学。
5)结合国内主流硬件开发板即正点原子STM32F103(战舰),书中给出了各个外设模块的硬件设计和软件设计实例,其代码均在开发板上调试通过,并可通过TFTLCD或串口调试助手查看调试结果,可以很好地锻炼学生的硬件理解能力和软件编程能力,起到举一反三的效果。
本书共11章。第1章对嵌入式系统进行了概述,介绍了嵌入式系统的组成、嵌入式系统的软件、嵌入式系统的分类、嵌入式系统的应用领域、嵌入式系统的体系、嵌入式处理器分类、ARM嵌入式微处理器、ARM Cortex-M3处理器的调试、嵌入式系统的设计方法和嵌入式系统的发展;第2章对STM32微控制器与最小系统设计进行了概述,介绍了STM32F1系列产品系统架构和STM32F103ZET6内部架构、STM32F103ZET6的存储器映像、STM32F103ZET6的时钟结构、STM32F103VET6的引脚、STM32F103VET6最小系统设计和学习STM32微控制器的方法;第3章介绍了嵌入式开发环境的搭建,包括Keil MDK5安装配置、Keil MDK下新工程的创建、J-Link驱动安装、Keil MDK5调试方法、Cortex-M3微控制器软件接口标准(CMSIS)、STM32F103开发板的选择和STM32仿真器的选择;第4章介绍了STM32通用输入/输出接口(GPIO),包括通用输入/输出接口概述、GPIO的功能、GPIO常用库函数、GPIO使用流程、GPIO按键输入应用实例和GPIO LED输出应用实例;第5章介绍了STM32中断系统,包括中断的基本概念、STM32F103中断系统、STM32F103外部中断/事件控制器(EXTI)、STM32F10x的中断系统库函数、外部中断设计流程和外部中断设计实例;第6章介绍了STM32定时器系统,包括STM32F103定时器概述、基本定时器、通用定时器、高级定时器、定时器库函数、定时器应用实例和系统滴答定时器(SysTick);第7章介绍了STM32通用同步/异步收发器(USART),包括串行通信基础、USART工作原理、USART库函数和USART串行通信应用实例;第8章介绍了STM32 SPI控制器,包括STM32的SPI通信原理、STM32F103的SPI工作原理、SPI库函数、SPI串行总线应用实例;第9章介绍了STM32 I2C控制器,包括I2C通信原理、STM32F103的I2C接口、STM32F103的I2C库函数和I2C控制器应用实例;第10章介绍了STM32模数转换器(ADC),包括模拟量输入通道、模拟量输入信号类型与量程自动转换、STM32F103ZET6集成的ADC模块、ADC库函数和模数转换器(ADC)应用实例;第11章介绍了STM32 DMA控制器,包括STM32 DMA的基本概念、DMA的结构和主要特征、DMA的功能描述、DMA库函数和DMA应用实例。
本书结合作者多年的科研和教学经验,遵循循序渐进、理论与实践并重、共性与个性兼顾的原则,将理论实践一体化的思想融入其中。书中实例开发过程用到的是目前使用最广泛的开发板,由此开发各种功能,对书中实例均进行了调试。读者也可以结合实际或者自有开发板开展实验,均能获得实验结果。实例由浅入深,层层递进,在帮助读者快速掌握某一外设功能的同时,有效融合其他外部设备,如按键、LED显示、USART串行通信、模数转换器和各类传感器等设计嵌入式系统,体现了学习的系统性。
由于水平有限,加上时间仓促,书中错误和不妥之处在所难免,敬请广大读者不吝指正。
作者