本书以新工科教育理念为指导,以产教融合为突破口,结合最新技术,面向产业需求组织内容,从科研、教学和工程实际应用出发,理论联系实际,全面、系统地介绍了基于STM32F103系列微控制器的嵌入式系统设计与应用实例。
本书是作者在教学与科研实践经验的基础上,结合多年来STM32嵌入式系统的发展编写而成的。全书共11章,主要内容包括:绪论、STM32微控制器与最小系统设计、嵌入式开发环境的搭建、STM32通用输入/输出接口(GPIO)、STM32中断系统、STM32定时器系统、STM32通用同步/异步收发器(USART)、STM32 SPI控制器、STM32 I2C控制器、STM32模数转换器(ADC)、STM32 DMA控制器。
本书可作为高等院校自动化、机器人、自动检测、机电一体化、人工智能、电子与电气工程、计算机应用、信息工程、物联网等相关专业的本、专科学生及研究生教材,也可供从事STM32微控制器开发的工程技术人员参考。
配套资源:教学用PPT、电子教案、课程教学大纲、试卷(含答案及评分标准)、习题参考答案
本书特色:
1)基于流行的STM32F103系列微控制器介绍嵌入式系统的设计与应用。
2)内容精练、图文并茂、循序渐进、重点突出。
3)不介绍烦琐的STM32寄存器,重点讲述STM32库函数。
4)以理论为基础,以应用为主导,章节内容前后安排逻辑性强、层次分明、易教易学。
5)结合国内主流硬件开发板即正点原子STM32F103(战舰),书中给出了各个外设模块的硬件设计和软件设计实例,其代码均在开发板上调试通过,并可通过TFTLCD或串口调试助手查看调试结果,可以很好地锻炼学生的硬件理解能力和软件编程能力,起到举一反三的效果。
前 言
近半个世纪以来,以计算机技术为代表的信息技术革命深刻地改变了人类社会的生产和生活方式。与人们朝夕相处的计算机也从传统意义上的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应用实例。
本书结合作者多年的科研和教学经验,遵循循序渐进、理论与实践并重、共性与个性兼顾的原则,将理论实践一体化的思想融入其中。书中实例开发过程用到的
第1章 绪论1
1.1 嵌入式系统1
1.2 嵌入式系统的组成5
1.3 嵌入式系统的软件7
1.4 嵌入式系统的分类14
1.5 嵌入式系统的应用领域16
1.6 嵌入式系统的体系16
1.7 嵌入式处理器分类20
1.8 ARM嵌入式微处理器21
1.9 ARM Cortex-M3处理器的调试34
1.10 嵌入式系统的设计方法34
1.11 嵌入式系统的发展38
习题41
第2章 STM32微控制器与最小系统设计43
2.1 STM32微控制器概述43
2.2 STM32F1系列微控制器系统架构和STM32F103ZET6内部架构51
2.3 STM32F103ZET6的存储器映像56
2.4 STM32F103ZET6的时钟结构60
2.5 STM32F103VET6的引脚63
2.6 STM32F103VET6最小系统设计67
2.7 学习STM32微控制器的方法70
习题70
第3章 嵌入式开发环境的搭建71
3.1 Keil MDK5安装配置71
3.2 Keil MDK下新工程的创建78
3.3 J-Link驱动安装81
3.4 Keil MDK5调试方法83
3.5 Cortex-M3微控制器软件接口标准(CMSIS)89
3.6 STM32F103开发板的选择94
3.7 STM32仿真器的选择98
习题99
第4章 STM32通用输入/输出
接口(GPIO)100
4.1 通用输入/输出接口概述100
4.2 GPIO的功能102
4.3 GPIO常用库函数107
4.4 GPIO使用流程114
4.5 GPIO按键输入应用实例115
4.6 GPIO LED输出应用实例118
习题120
第5章 STM32中断系统121
5.1 中断的基本概念121
5.2 STM32F103 中断系统125
5.3 STM32F103外部中断/事件控制器(EXTI)129
5.4 STM32F10x的中断系统库函数133
5.5 外部中断设计流程141
5.6 外部中断设计实例143
习题148
第6章 STM32定时器系统149
6.1 STM32F103定时器概述149
6.2 基本定时器150
6.3 通用定时器153
6.4 高级定时器161
6.5 定时器库函数162
6.6 定时器应用实例174
6.7 系统滴答定时器(SysTick)177
习题180
第7章 STM32通用同步/异步
收发器(USART)181
7.1 串行通信基础181
7.2 USART工作原理183
7.3 USART库函数188
7.4 USART串行通信应用实例195
习题201
第8章 STM32 SPI控制器202
8.1 STM32的SPI通信原理202
8.2 STM32F103的SPI工作原理205
8.3 SPI库函数209
8.4 SPI串行总线应用实例211
习题221
第9章 STM32 I2C控制器222
9.1 I2C通信原理222
9.2 STM32F103的I2C接口227
9.3 STM32F103的I2C库函数229
9.4 I2C控制器应用实例234
习题243
第10章 STM32模数转换器(ADC)244
10.1 模拟量输入通道244
10.2 模拟量输入信号类型与量程自动转换245
10.3 STM32F103ZET6集成的ADC模块245
10.4 ADC库函数254
10.5 模数转换器(ADC)应用实例262
习题267
第11章 STM32 DMA控制器268
11.1 STM32 DMA的基本概念268
11.2 DMA的结构和主要特征270
11.3 DMA的功能描述271
11.4 DMA库函数273
11.5 DMA应用实例279
习题285
附录 常用专有名词中英文对照286
参考文献288