嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可以裁剪,对性能、成本、
           体积、功耗及可靠性有严格要求的专用计算机系统。在现实生活中,凡是涉及计算机控制的
           电子产品绝大多数都用到了嵌入式计算机系统,特别是在目前热门的人工智能、无人驾驶、
           机器人、无人机、汽车电子、航空航天、海洋监测、智能监控、智慧健康等领域。嵌入式技
           术与人们日常生活方方面面的关系越来越紧密,如消费电子、计算机、通信一体化趋势日益
           明显。作为计算机领域的一个重要组成部分,嵌入式系统已成为教学、研究与应用的热点。
               由于嵌入式系统的专用性和多样性,以及新技术、新工艺、新需求的不断涌现,嵌入式
           系统设计面临巨大挑战。在微电子技术、处理器性能、操作系统、通信技术、接口技术和封
           装技术的推动下,涌现出大量新的系统和应用。随着相关技术的迅速发展,嵌入式技术不断
           演化和更新,对嵌入式系统新技术的学习也跨入了一个新阶段。
               计算机是     20 世纪人类最伟大的发明之一,由此带来的信息化改变了人们的生活方式,
           也推动了人类社会的变革。嵌入式系统是应用最广泛的计算机系统之一,随着物联网、信息
           物理融合系统的发展,嵌入式系统技术已经得到飞速发展。
               嵌入式系统的发展确实超乎了我们的想象。从早期的                           8 位单片机,到目前主流的             32 位
           单片机,其应用已深深渗透于生产、生活的各个方面。作为                              Arm  的一个典型系列,STM32
           以其较高的性能和优越的性价比,毫无疑问地成为                          32 位单片机市场的主流。把             STM32   引
           入大学的培养体系,已经成为广大高校师生的普遍共识和共同实践。
               32 位微控制器时代已经到来。32              位微控制器性能优越,功能强大但结构复杂,使很多
           嵌入式工程师望而却步。读者对一本好的嵌入式系统入门教材的需求越来越迫切。
               正是基于市场需求,Arm           公司率先推出了一款基于             Arm V7  架构的    32 位 Arm Cortex-M
           微控制器内核。Cortex-M         系列内核支持两种运行模式,即线程模式(Thread Mode)与处理
           者模式(Handler Mode)。这两种模式都有各自独立的堆栈,使得内核更加支持实时操作
           系统,并且 Cortex-M      系列内核支持 Thumb-2 指令集。因此,基于                   Cortex-M 系列内核的微
           控制器的开发和应用可以在              C 语言环境中完成。
               Arm Cortex-M3  是采用哈佛结构、拥有独立指令总线和数据总线的                           32 位处理器内核,
           指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统),为系统资源的分配
           和管理提供了很好的支持。
               继 Cortex-M 系列内核诞生之后,意法半导体公司积极响应当今嵌入式产品市场的新要
           求和新挑战,推出了基于             Cortex-M 系列内核的       STM32  微控制器。它具有出色的微控制器


全书.indd   1                                                                                     2024/3/7   15:46:48    II     Arm 嵌入式系统原理及应用——STM32F103 微控制器架构、编程与开发

           内核和完善的系统结构设计,以及易于开发、性能高、兼容性好、功耗低、实时处理能力和
           数字信号处理能力强等优点,这使得                   STM32  微控制器一上市就迅速占领了中低端微控制器
           市场。STM32     微控制器不仅完美地适应了当前市场的需求,还使意法半导体公司在低价位
           和高性能两条产品主线上取得了巨大进步。正因为如此,基于                               Arm Cortex-M3  的 STM32   系
           列 MCU   以其高性能、低功耗、高可靠性和低价格的特点,逐渐成为高校师生与工程师学习
           和使用的主要       MCU  类型。
               因此,本书以意法半导体公司的基于                   32 位 Arm  内核的    STM32F103  为背景机型,介绍
           嵌入式系统原理与应用。由于               STM32  的网上资源非常丰富,因此便于读者学习参考。
               本书的特点如下。
              (1)采用流行的        STM32F103   系列嵌入式微控制器讲述嵌入式系统原理与应用。
              (2)内容精练,图文并茂,循序渐进,重点突出。
              (3)不讲述烦琐的         STM32  寄存器,重点讲述          STM32  的库函数。
              (4)以理论为基础,以应用为主导,章节内容安排逻辑性强,层次分明,易教易学。
              (5)结合国内主流硬件开发板(野火                  STM32  开发板    F103- 霸道),书中给出了各个外设
           模块的硬件设计和软件设计实例,其代码均在开发板上调试通过,并通过                                     TFT LCD  或串口
           调试助手查看调试结果,可以很好地培养学生的硬件理解能力和软件编程能力,起到举一反
           三的效果。
              (6)所选开发板的价格在             500 元左右,且容易买到,方便学校实验教学。
               全书共    12 章。第    1 章对嵌入式系统进行概述,介绍嵌入式系统的组成、实时操作系
           统、嵌入式系统的软件、嵌入式系统的分类、嵌入式系统的应用领域、嵌入式系统的体
           系和嵌入式系统的设计方法;第                 2 章对嵌入式微处理器进行概述,介绍                    Arm  嵌入式微处
           理器、嵌入式微处理器的分类和特点、Cortex-M3                      嵌入式微处理器;第            3 章对  STM32   系
           列微控制器进行概述,介绍               STM32F1   系列产品系统架构和            STM32F103ZET6    内部架构、
           STM32F103ZET6   的存储器映像、STM32F103ZET6               的时钟结构、STM32F103VET6             的
           引脚、STM32F103VET6       最小系统设计;第           4 章讲述嵌入式开发环境的搭建,包括                     Keil 
           MDK5  安装配置、Keil MDK        新工程的创建、Cortex-M3           微控制器软件接口标准             CMSIS、
           STM32F103  开发板的选择和         STM32   仿真器的选择;第          5 章讲述    STM32  中断,包括中断
           概述、STM32F1     中断系统、STM32F1         外部中断/事件控制器           EXTI、STM32F1     的中断系统
           库函数、STM32F1       外部中断设计流程和           STM32F1  外部中断设计实例;第            6 章讲述    STM32 
           GPIO,包 括   STM32  通用输入输出接口概述、GPIO             功能、GPIO    常用库函数、GPIO        使用流程、
           GPIO 输出应用实例和         GPIO 输入应用实例;第          7 章讲述    STM32  定时器,包括       STM32  定时
           器概述、基本定时器、通用定时器、定时器库函数、定时器应用实例和                                   SysTick 系统滴答定
           时器;第     8 章讲述    STM32  通用同步/异步收发器,包括串行通信基础、STM32                         的  USART
           工作原理、USART        库函数和      USART  串行通信应用实例;第             9 章讲述    STM32 SPI  串行总
           线,包括     STM32 的  SPI 通信原理、STM32F1 SPI        串行总线的工作原理、STM32             的  SPI 库函


全书.indd   2                                                                                     2024/3/7   15:46:49                                                                                           前言        III

           数、STM32 SPI    与 Flash 存储器接口的应用实例;第              10 章讲述    STM32 I2C  串行总线,包括
           STM32 I2C  串行总线的通信原理、STM32 I2C             串行总线接口、STM32F103           的 I2C 库函数和
           STM32 I2C  与 EEPROM    接口的应用实例;第          11 章讲述    STM32 A/D  转换器,包括模拟量输
           入通道、模拟量输入信号类型与量程自动转换、STM32F103VET6                            集成的    ADC  模块、ADC
           库函数和     A/D 转换器应用实例;第           12 章讲述    STM32 DMA    控制器,包括        STM32 DMA    的
           基本概念、DMA        的结构和主要特征、DMA            的功能描述、DMA          库函数和     DMA  应用实例。
               本书结合编者多年的科研和教学经验,遵循“循序渐进,理论与实践并重,共性与个性
           兼顾”的原则,将理论实践一体化的教学方式融入其中。书中实例开发过程用到的是目前
           使用最广泛的野火         STM32 F103-  霸道开发板,由此开发各种功能,书中实例均进行了调试。
           读者也可以结合实际或手里现有的开发板开展实验,均能获得实验结果。书中实例由浅入
           深,层层递进,在帮助读者快速掌握某一外设功能的同时,有效融合其他外部设备,如按键、
           LED 显示、USART      串行通信、ADC       和各类传感器等,设计嵌入式系统,体现学习的系统性。
               本书数字资源丰富,配有电子课件、教学大纲、习题及答案等电子配套资源。
               本书引用了大量参考文献,在此一并向这些参考文献的作者表示真诚的感谢。由于编者
           水平有限,加上时间仓促,书中不妥之处在所难免,敬请广大读者不吝指正。

                                                                                        编者
                                                                                    2024 年  1 月


全书.indd   3                                                                                     2024/3/7   15:46:49