搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
基于STM32的嵌入式系统原理及应用
0.00     定价 ¥ 79.00
罗湖图书馆
此书还可采购10本,持证读者免费借回家
  • ISBN:
    9787030697974
  • 作      者:
    何乐生,等
  • 出 版 社 :
    科学出版社
  • 出版日期:
    2021-11-01
收藏
畅销推荐
精彩书摘
第1章 嵌入式系统概述
  当今信息时代下,我们的生活中信息设备无处不在,其中应用*为广泛的就是嵌入式系统(Embedded System)。它们数量庞大、品类繁多、形态各异,从个人的衣食住行到社会的各行各业,为人类的生产、生活提供了方方面面的便捷服务。嵌入式系统的应用领域不计其数,这里列出了一部分常见的嵌入式系统应用。
  (1)消费类电子:智能高清电视、数码相机、游戏机、智能手环、体重秤、智能音箱、空调。
  (2)汽车电子:发动机控制系统、车身控制系统、底盘控制系统、车载信息系统。
  (3)卫生健康:起搏器、血压计、血糖仪、心电监护仪、呼吸机、治疗仪、康复仪。
  (4)军事国防:雷达、飞机、导弹、坦克、火炮、单兵作战装备、无人机、潜航器。
  (5)工业应用:自动售货机、机器人、仪器仪表、数控机床、通信基站、环境监测。
  本章分为4节,分别介绍嵌入式系统的概念与特点、嵌入式系统的组成、嵌入式系统的分类,以及嵌入式系统的发展。
  1.1 嵌入式系统的概念与特点
  嵌入式系统可以追溯到20世纪60年代,1961年,美国麻省理工学院教授查尔斯 斯塔克 德雷珀为阿波罗指挥舱和登月舱上的制导计算机开发了一种集成电路,以减小计算机的尺寸和重量。1965年,现在隶属于波音公司的一家自动驾驶技术公司开发了用于民兵Ⅰ导弹制导系统的计算机D-17B,它被广泛认为是第一个大规模生产的嵌入式系统。当民兵Ⅱ导弹在1966年投入生产时,D-17B被NS-17导弹制导系统所取代,该系统以大量使用集成电路而闻名。1968年,第一个用于汽车的嵌入式系统出现,在大众1600汽车中使用了集成电路来控制其电子燃油喷射系统。
  20世纪60年代末和70年代初,集成电路的价格下降,使用量激增。第一个微处理器是美国德州仪器(TI)公司在1971年开发的。1974年包含了4位处理器、只读存储器和随机存取存储器的TMS 1000系列微处理器上市。1971年英特尔公司成功把算术运算器和控制器电路集成在一个集成电路上,发布了专门为计算器和小型电子设备设计的第一款商用4位微处理器Intel 4004。1972年英特尔公司又发布了有16KB内存的8位微处理器Intel 8008。1974年Intel(英特尔)公司推出具有64KB内存的Intel 8080,它是延续至今的x86处理器的鼻祖。1976年英特尔公司推出的Intel 8048(MCS-48系列)8位微控制器,被认为是现代单片机的雏形。1980年英特尔公司对MCS-48的结构进行了全面完善,推出了MCS-51系列微控制器,获得了巨大的成功,开启了单片机时代,也标志着嵌入式系统产业的诞生。自微处理器和微控制器问世之后,以其为核心构成的系统被广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域,形成了一个广阔的嵌入式应用市场。
  在嵌入式操作系统方面,1987年美国Wind River(风河)公司发布了第一个嵌入式实时操作系统VxWorks。1996年微软公司发布了Windows Embedded CE。20世纪90年代后期,第一个嵌入式Linux产品开始出现。
  以上这些都是嵌入式系统的里程碑事件。
  1.1.1 嵌入式系统的概念
  简单来说,嵌入式系统是一种嵌入其他系统中的计算机系统。“嵌入”一词所反映的含义是:嵌入对象是作为被嵌入对象(宿主对象)一个必要部分而存在的。既然嵌入式系统是一种特别的计算机系统,那么它究竟是一种什么样的计算机系统呢?
  1. 嵌入式系统的定义
  “嵌入式系统”这个词已经出现几十年了,但到目前为止,依然没有一个统一的标准定义。人们从不同的角度对嵌入式系统给出了多种多样的定义。
  维基百科给出的嵌入式系统定义是:嵌入式系统是一种嵌入机械或电气系统内部,具有专一功能和实时计算性能的计算机系统(An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints)。从这一定义可以看出,除了嵌入、专用和计算机系统三个属性外,嵌入式系统还有另外一个属性:实时性。
  英国电气工程师学会(the Institute of Electrical Engineers, IEE)给出的嵌入式系统定义是:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。这个定义从应用的视角来看,嵌入式系统不仅仅是软、硬件的综合体,还可以涵盖机械装置和电气设备,含义更为宽泛。
  国内普遍认同的嵌入式系统定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可定制和裁剪,适应于应用系统,并对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。“专用”这个词,是相对于通用计算机系统的“通用”来说的。但现在的智能手机是嵌入式系统吗?这个问题很难给出准确的回答。站在使用者的角度看,智能手机已经覆盖了个人计算机大部分的功能,甚至有些功能是个人计算机所没有的,所以智能手机已经具有了通用性,可以认为是一种通用计算机设备。因此智能手机也会被认为不是嵌入式系统。如果站在开发者的角度来看,由于智能手机本身不具备自开发的环境,通常需要在通用计算机上利用各种开发工具来进行交叉开发,具备嵌入式系统开发的形式与特征,所以智能手机被认为是一种嵌入式系统。当然,还可以认为智能手机是多个嵌入式系统的集合,因为其内部可能包含了多个嵌入式系统。
  实际上,由于近年来嵌入式系统已经具备了非常多的新功能,嵌入式系统这个名词的外延得到了广泛的扩展,嵌入式系统与非嵌入式系统的边界变得越来越模糊。
  2. 嵌入式系统与通用计算机系统的区别
  嵌入式系统和通用计算机系统都是计算机系统,都具有计算机系统的基本特征,它们的共同点在于从组成上看都具有处理器,都包含了硬件和软件两个主要部分。但是嵌入式系统与通用计算机系统有着完全不同的技术要求和技术发展方向。表1.1.1展示了嵌入式系统与通用计算机系统的一些主要区别。
  表1.1.1 嵌入式系统与通用计算机系统的区别
  1.1.2 嵌入式系统的特点
  从嵌入式系统的定义,以及它与通用计算机系统的区别,不难看出嵌入式系统所具有的特点。
  1. 专用性强
  嵌入式系统通常是针对某种特定的应用场景,与具体应用密切相关,其硬件和软件都是面向特定产品或任务而设计的。不但一种产品中的嵌入式系统不能应用到另一种产品中,甚至都不能嵌入同一种产品的不同系列。例如,洗衣机的控制系统不能应用到洗碗机中,甚至不同型号洗衣机中的控制系统也不能相互替换,因此嵌入式系统具有很强的专用性。
  2. 实时性好
  许多嵌入式系统应用于宿主系统的数据采集、传输与控制过程时,普遍要求嵌入式系统具有较好的实时性。例如,像现代汽车中的制动器、安全气囊控制系统、武器装备中的控制系统、某些工业装置中的控制系统等。这些应用对实时性有着极高的要求,一旦达不到应有的实时性,就有可能造成极其严重的后果。另外,虽然有些系统本身的运行对实时性要求不是很高,但实时性也会对用户体验感产生影响,例如,需要避免人机交互的卡顿、遥控反应迟钝等情况。
  3. 可靠性高
  嵌入式系统的应用场景多种多样,面对复杂的应用环境,嵌入式系统应能够长时间稳定可靠地运行。在某些应用中,嵌入式系统硬件或软件中存在的一个小“bug”,都有可能导致灾难性后果的发生。例如,波音737MAX客机在2018~2019年相继发生的两起重大空难,都是因为“迎角传感器”(Angle of Attack,AOA)的数据错误,触发了“防失速”控制系统自动操作,机头不断下压。飞行员多次手动拉伸未果,*终导致飞机坠毁的灾难性事故。由此可见,高可靠性要求是特殊应用中嵌入式系统的显著特征。
  4. 体积小、功耗低
  由于嵌入式系统要嵌入具体的应用对象体中,其体积大小受限于宿主对象,因此往往对体积有着严格的要求,例如,心脏起搏器的大小就像一粒胶囊。2020年8月,埃隆 马斯克发布的拥有1024个信道的Neuralink脑机接口只有一枚硬币大小。同时,由于嵌入式系统在移动设备、可穿戴设备以及无人机、人造卫星等这样的应用设备中,不可能配置交流电源或大容量的电池,因此低功耗也往往是嵌入式系统所追求的一个重要指标。
  5. 注重制造成本
  与其他商品一样,制造成本会对嵌入式系统设备或产品在市场上的竞争力有很大的影响。同时嵌入式系统产品通常会进行大量生产,例如,现在的消费类嵌入式系统产品,通常的年产量会在百万数量级、千万数量级甚至亿数量级。节约单个产品的制造成本,意味着总制造成本的海量节约,会产生可观的经济效益。因此注重嵌入式系统的硬件和软件的高效设计,量体裁衣、去除冗余,在满足应用需求的前提下有效地降低单个产品的制造成本,也成为嵌入式系统所追求的重要目标之一。
  6. 生命周期长
  随着计算机技术的飞速发展,像桌面计算机、笔记本电脑以及智能手机这样的通用计算机系统的更新换代速度大大加快,更新周期通常为18个月左右。然而嵌入式系统和实际具体应用装置或系统紧密结合,一般会伴随具体嵌入的产品维持8~10年相对较长的使用时间,其升级换代往往是和宿主对象系统同步进行的。因此,相较于通用计算机系统而言,嵌入式系统产品一旦进入市场后,不会像通用计算机系统那样频繁换代,通常具有较长的生命周期。
  7. 不可垄断性
  代表传统计算机行业的Wintel(Windows-Intel)联盟统治桌面计算机市场长达30多年,形成了事实上的市场垄断。而嵌入式系统是将先进的计算机技术、半导体电子技术和网络通信技术与各个行业的具体应用相结合后的产物,其拥有更为广阔和多样化的应用市场,行业细分市场极其宽泛,这一点就决定了嵌入式系统必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。特别是5G技术、物联网技术以及人工智能技术与嵌入式系统的快速融合,催生了嵌入式系统创新产品的不断涌现,没有一家企业能够形成对嵌入式系统市场的垄断,给嵌入式系统产品的设计研发提供了广阔的市场空间。
  1.2 嵌入式系统的组成
  嵌入式系统是一个在功能、可靠性、成本、体积和功耗等方面有严格要求的专用计算机系统,那么无一例外,具有一般计算机组成结构的共性。从总体上看,嵌入式系统的核心部分由嵌入式硬件和嵌入式软件组成,而从层次结构上看,嵌入式系统可划分为硬件层、驱动层、操作系统层以及应用层四个层次,如图1.2.1所示。
  图1.2.1 嵌入式系统的组成结构
  嵌入式硬件(硬件层)是嵌入式系统的物理基础,主要包括嵌入式处理器、存储器、输入/输出(I/O)接口及电源等。其中,嵌入式处理器是嵌入式系统的硬件核心,通常可分为嵌入式微处理器、嵌入式微控制器、嵌入式数字信号处理器以及嵌入式片上系统等主要类型。
  存储器是嵌入式系统硬件的基本组成部分,包括RAM、Flash、EEPROM等主要类型,承担着存储嵌入式系统程序和数据的任务。目前的嵌入式处理器中已经集成了较为丰富的存储器资源,同时也可通过I/O接口在嵌入式处理器外部扩展存储器。
  I/O接口及设备是嵌入式系统对外联系的纽带,负责与外部世界进行信息交换。I/O接口主要包括数字接口和模拟接口两大类,其中,数字接口又可分为并行接口和串行接口,模拟接口包括模数转换器(A
展开
目录
目录
第1章 嵌入式系统概述 1
1.1 嵌入式系统的概念与特点 1
1.1.1 嵌入式系统的概念 2
1.1.2 嵌入式系统的特点 3
1.2 嵌入式系统的组成 4
1.2.1 嵌入式处理器 6
1.2.2 嵌入式操作系统 10
1.3 嵌入式系统的分类 14
1.4 嵌入式系统的发展 16
1.4.1 嵌入式系统的发展历程 16
1.4.2 嵌入式系统的发展趋势 17
第2章 ARM嵌入式处理器 20
2.1 ARM嵌入式处理器简介 20
2.1.1 ARM处理器的特点 20
2.1.2 ARM体系结构的版本和系列 21
2.1.3 ARM处理器系列 24
2.1.4 ARM Cortex-M处理器 28
2.2 ARM Cortex-M3架构 29
2.2.1 概述 29
2.2.2 寄存器组 31
2.2.3 特殊功能寄存器组 33
2.2.4 操作模式和特权级别 35
2.2.5 存储器系统 36
2.2.6 中断和异常 43
2.2.7 ARM Cortex-M3的调试 44
2.2.8 低功耗和系统控制特性 45
2.3 ARM Cortex-M3指令集 45
2.3.1 汇编语言基础 45
2.3.2 ARM Cortex-M3指令集详解 47
2.3.3 汇编语言初步应用 52
第3章 STM32嵌入式处理器体系结构 63
3.1 STM32概述 63
3.1.1 STM32系列嵌入式处理器及其命名规则 63
3.1.2 STM32的片上资源 64
3.1.3 STM32的优势 66
3.2 总线结构和存储空间组织 67
3.2.1 总线结构 67
3.2.2 存储空间组织 68
3.2.3 启动配置 73
3.2.4 在Flash中运行程序 74
3.3 复位和时钟 76
3.3.1 STM32系列嵌入式处理器的复位电路 76
3.3.2 STM32系列嵌入式处理器的时钟系统 78
3.3.3 STM32的看门狗功能 82
3.4 中断和STM32的嵌套向量中断控制器 85
3.4.1 中断机制概述 85
3.4.2 STM32的NVIC 88
3.4.3 NVIC的配置和使用 91
3.5 电源管理 92
3.5.1 STM32的供电及电源监测功能 92
3.5.2 STM32F1系列嵌入式处理器的低功耗模式 95
第4章 嵌入式开发环境的搭建 98
4.1 嵌入式开发环境概述 98
4.1.1 嵌入式硬件开发环境 98
4.1.2 嵌入式软件开发环境 101
4.2 嵌入式集成开发环境 103
4.2.1 集成开发环境概述 103
4.2.2 Keil MDK集成开发环境 105
4.2.3 其他集成开发环境 114
4.3 开发调试工具 118
4.3.1 ARM处理器的JTAG调试工具 118
4.3.2 典型JTAG工具ST-LINK的安装和配置 122
4.4 基于标准外设库的软件开发 126
4.4.1 STM32开发库概述 127
4.4.2 STM32标准外设库 128
4.4.3 Keil MDK下STM32标准外设库应用开发环境的搭建 134
第5章 STM32系列嵌入式处理器的片上外设 150
5.1 通用输入输出口 150
5.1.1 STM32 GPIO的基本原理 150
5.1.2 标准外设库中的GPIO相关函数及其使用实例 161
5.1.3 外部中断和事件 164
5.2 DMA控制器 169
5.2.1 DMA的基本概念和原理 169
5.2.2 STM32上的DMA控制器及其控制方法 171
5.2.3 标准外设库中的DMA相关函数及其使用实例 174
5.3 通用同步/异步收发器 177
5.3.1 串行通信的基本概念 177
5.3.2 STM32上的USART及其控制方法 186
5.3.3 标准外设库中的USART相关函数及其使用实例 189
5.4 定时器TIM 193
5.4.1 STM32中定时器的分类和特点 194
5.4.2 系统定时器 195
5.4.3 通用定时器(TIM2~TIM5) 196
5.4.4 基本定时器(TIM6、TIM7) 208
5.5 SPI串行接口 209
5.5.1 SPI的基础知识 209
5.5.2 STM32上的SPI及其控制方法 213
5.5.3 标准外设库中的SPI相关函数及其使用实例 216
5.6 I2C总线接口 218
5.6.1 I2C总线的基础知识 218
5.6.2 STM32上的I2C总线接口及其控制方法 223
5.6.3 标准外设库中的I2C相关函数及其使用实例 225
5.7 FSMC并行接口 227
5.7.1 STM32系列嵌入式处理器上的FSMC并行接口 228
5.7.2 FSMC存储块1(标准静态随机存储器)的使用方法 232
5.7.3 标准外设库中的FSMC相关函数及其使用实例 234
5.8 A/D和D/A转换器 237
5.8.1 A/D转换器综述 238
5.8.2 STM32上的A/D转换模块 241
5.8.3 标准外设库中ADC相关函数及其使用实例 249
5.8.4 STM32上的D/A转换器及其使用方式 254
5.9 CAN总线接口 257
5.9.1 CAN通信模型及网络结构 258
5.9.2 CAN数据帧结构 258
5.9.3 STM32上的bxCAN及其控制方法 259
5.9.4 标准外设库中的bxCAN相关函数及其使用实例 268
第6章 STM32嵌入式系统开发实例 271
6.1 工业控制领域的应用实例 271
6.2 信号处理领域的应用实例 278
6.2.1 心电信号采集和处理系统 278
6.2.2 仪表总线主机数字解调器 288
参考文献 296
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用罗湖图书馆的读者帐号和密码进行登录

点击获取验证码
登录