嵌入式系统原理与应用

基于STM32F4系列微控制器,全书代码基于HAL库,分模块总结HAL库函数,凝结作者20年实战经验,理论与实践并重的嵌入式系统原理与应用图书,配套丰富的教辅资源与微课视频,支持混合式教学模式!
分享 推荐 14 收藏 291 阅读 9.8K
梁晶 , 吴银琴 (编著) 978-7-115-57279-0

关于本书的内容有任何问题,请联系 人邮社 王宣

结构合理,语言精炼,案例丰富。
基于Arm体系结构的STM32F4系列微控制器。
详细介绍嵌入式系统的概念、原理、应用及开发工具链。
配套丰富教辅资源,支持随时随地自学,助力读者稳步提升工程实践能力。

特别说明

嵌入式系统的学习通常可分为以下两个阶段。
### 第一个阶段:以掌握嵌入式系统概念、开发工具链、芯片指令集和简单外设使用方法为主。这个阶段通常以低端嵌入式微控制器(如 8051、Cortex-M0/M3/M4 等)为核心,学习重点是掌握相关微控制器的内部结构和功能,主要学习内容偏向于微控制器内部模块和外围硬件电路的工作原理与编程方法。
### 第二个阶段:主要学习以实时操作系统、嵌入式 Linux 操作系统或者 Android 操作系统为核心的嵌入式系统开发方法,硬件环境通常是基于 Cortex-A9/A15/A53/A77 等高性能嵌入式处理器的平台。
读者在第一个阶段的学习过程中须避免出现“只见树木、不见森林”的问题,要能够掌握嵌入式系统开发的本质和精髓,做到举一反三。读者在第二个阶段的学习过程中要着重掌握嵌入式操作系统的工作原理与编程方法,但也不能忽略嵌入式系统来源于电子工程的本质。
本书主要面向第一个阶段的初学者,通过构建成体系的知识架构,使读者能够从嵌入式系统电子工程的本质入手,充分掌握嵌入式系统的概念、工作原理和开发工具链,配合大量的实践案例,加强初学者对嵌入式系统基本概念和底层硬件工作原理的了解,着重引导初学者将各个知识点转变为从事嵌入式系统设计的能力点。

【作者推荐】
本书针对读者学习嵌入式系统入门困难、相关内容较为抽象、学习以后动手能力差等问题,通过通俗易懂的文字描述和丰富的案例介绍,让读者掌握嵌入式系统的基本概念、工作原理和开发方法,同时尽量避免烦琐的软/硬件配置细节描述。
本书使用的硬件环境基于 STM32F4 系列微控制器,具体型号是 STM32F407xx,其中阐述的微控制器工作原理与编程方法也适用于 STM32 系列中的其他型号的微控制器。全书的案例都使用C语言和 HAL 库编程实现。为了照顾部分对嵌入式系统底层程序开发感兴趣的读者,本书在讲解Cortex-M3/M4 架构的部分保留了对汇编语言的介绍。

内容摘要

本书首先介绍了嵌入式系统的基本概念和背景知识,以及常见的嵌入式系统硬件和嵌入式系统开发工具;其次讲解了基于Cortex-M3/M4架构微控制器的内部结构和指令集,帮助读者建立对嵌入式处理器的宏观认识;然后介绍了STM32微控制器的开发工具链,包括STM32CubeMX、Keil MDK和设备驱动库等;最后以STM32F4系列微控制器为例,阐述了其主要功能模块的工作原理和编程方法,包括这些模块的内部结构、外围硬件电路设计方法、寄存器组织和应用案例等内容。
本书可作为高等院校计算机、电子信息、自动化、电力电气等专业的“嵌入式系统原理”“嵌入式系统编程”“32位单片机原理与应用”等课程的教材和教学参考书,也可作为工程实训、电子制作与竞赛的实践教材,还可作为从事自动控制、物联网、机电一体化等应用领域开发工作的工程技术人员的参考书。

目录

章名目录
----------
第1章 嵌入式系统概述
第2章 嵌入式系统基础知识
第3章 Arm处理器介绍
第4章 Cortex-M3/M4架构
第5章 STM32系列微控制器
第6章 STM32设备驱动库和STM32CubeMX
第7章 Keil MDK集成开发环境
第8章 处理器时钟
第9章 通用输入输出端口
第10章 异常与中断处理
第11章 定时器
第12章 串行通信接口
第13章 DMA
第14章 数模转换器
第15章 模数转换器
第16章 浮点运算与数字信号处理
第17章 综合应用案例

具体目录
----------
第1章 嵌入式系统概述 1
1.1 嵌入式系统的概念 1
1.2 嵌入式系统的特点 2
1.3 嵌入式系统的组成 4
1.4 嵌入式系统的应用领域 7
1.5 思考与练习 8

第2章 嵌入式系统基础知识 9
2.1 嵌入式硬件系统 9
2.1.1 嵌入式处理器 9
2.1.2 存储器 17
2.1.3 外围接口 20
2.2 嵌入式软件系统 21
2.2.1 嵌入式操作系统 22
2.2.2 嵌入式图形系统 23
2.3 嵌入式系统的开发流程与开发模式 25
2.3.1 嵌入式系统的开发流程 25
2.3.2 嵌入式系统的开发模式 26
2.4 思考与练习 30

第3章 Arm处理器介绍 31
3.1 概述 31
3.2 Arm体系结构 32
3.2.1 Arm体系结构的版本 33
3.2.2 Arm体系结构的扩展 36
3.3 常见的Arm处理器 37
3.4 思考与练习 40

第4章 Cortex-M3/M4架构 41
4.1 概述 41
4.2 Cortex-M3/M4的内部结构 42
4.3 Cortex-M3/M4的系统地址映射 46
4.4 Cortex-M3/M4的编程模型 47
4.4.1 工作模式和运行级别 48
4.4.2 存储格式 48
4.4.3 寄存器组 49
4.5 Cortex-M3/M4的异常 53
4.6 指令集和汇编语言 54
4.6.1 Thumb指令集概述 54
4.6.2 汇编语言基础 55
4.6.3 寻址方式 57
4.6.4 统一汇编语言 60
4.7 思考与练习 61

第5章 STM32系列微控制器 62
5.1 概述 62
5.2 STM32F407xx微控制器介绍 63
5.3 STM32F407xx的地址映射 67
5.4 启动方式的配置 71
5.5 STM32系列微控制器的命名规则 72
5.6 STM32系列微控制器的引脚功能 73
5.7 STM32最小系统的组成 75
5.8 思考与练习 78

第6章 STM32设备驱动库和STM32CubeMX 79
6.1 CMSIS介绍 79
6.2 STM32设备驱动库 82
6.2.1 STM32设备驱动库简介 82
6.2.2 预定义数据类型和结构体 86
6.2.3 解析HAL库 88
6.3 STM32CubeMX辅助开发工具 91
6.4 思考与练习 97

第7章 Keil MDK集成开发环境 98
7.1 Keil MDK介绍 98
7.2 Keil MDK安装 99
7.3 Keil MDK使用 102
7.4 Keil MDK程序调试 110
7.5 STM32F407xx引导代码解析 112
7.6 思考与练习 115

第8章 处理器时钟 116
8.1 时钟概述 116
8.2 时钟相关参数 119
8.3 时钟参数配置方法 120
8.3.1 工程设置 121
8.3.2 时钟相关代码解析 122
8.4 思考与练习 126

第9章 通用输入输出端口 127
9.1 STM32F4微控制器的GPIO端口 127
9.2 GPIO配置方法 129
9.3 GPIO编程 130
9.3.1 工程配置 131
9.3.2 GPIO相关数据结构和API函数 132
9.3.3 GPIO代码解析 133
9.4 位带操作 137
9.4.1 位带概述 137
9.4.2 位带编程 138
9.5 思考与练习 140

第10章 异常与中断处理 141
10.1 中断控制器的工作原理 141
10.1.1 中断优先级 142
10.1.2 外部中断和事件 147
10.2 中断编程 149
10.2.1 工程配置 149
10.2.2 中断相关数据结构和API函数 151
10.2.3 中断代码解析 154
10.3 思考与练习 157

第11章 定时器 158
11.1 系统定时器 158
11.2 通用定时器 162
11.2.1 定时器的时钟源 165
11.2.2 定时器的计数单元 167
11.3 定时器的基本计数功能 168
11.3.1 工程配置 169
11.3.2 计数相关数据结构和API函数 171
11.3.3 定时器计数代码解析 173
11.4 定时器的输出比较模式 175
11.4.1 工程配置 175
11.4.2 输出比较模式相关数据结构和API函数 178
11.4.3 输出比较模式代码解析 179
11.5 定时器的PWM输出模式 182
11.5.1 工程配置 183
11.5.2 PWM输出模式相关数据结构和API函数 184
11.5.3 PWM输出模式代码解析 185
11.6 定时器的外部时钟模式 186
11.6.1 工程配置 187
11.6.2 外部时钟模式代码解析 188
11.7 定时器的级联 189
11.7.1 工程配置 189
11.7.2 定时器级联代码解析 192
11.8 定时器的输入捕获模式 193
11.8.1 工程配置 193
11.8.2 输入捕获模式相关数据结构和API函数 194
11.8.3 输入捕获模式代码解析 195
11.9 思考与练习 197

第12章 串行通信接口 199
12.1 串行通信与异步串行通信 199
12.1.1 串行通信概述 199
12.1.2 异步串行通信协议 200
12.1.3 异步串行通信的接口标准 201
12.2 STM32F407xx的异步串行通信 204
12.3 异步串行通信参数设置 205
12.4 阻塞方式串行通信 209
12.4.1 工程配置 210
12.4.2 异步串行通信相关数据结构和API函数 211
12.4.3 异步串行通信阻塞方式通信代码解析 213
12.5 非阻塞方式串行通信 215
12.5.1 工程配置 216
12.5.2 异步串行通信中断处理相关函数 216
12.5.3 异步串行通信非阻塞方式通信代码解析 217
12.6 思考与练习 219

第13章 DMA 220
13.1 DMA介绍 220
13.1.1 STM32F4微控制器的DMA工作原理 220
13.1.2 DMA参数配置 222
13.2 外设与存储器之间的DMA传输 224
13.2.1 工程配置 224
13.2.2 DMA相关数据结构和API函数 226
13.2.3 外设到存储器的DMA传输代码解析 228
13.3 存储器到存储器的DMA传输 230
13.3.1 工程配置 231
13.3.2 存储器到存储器的DMA传输代码解析 231
13.4 思考与练习 234

第14章 数模转换器 235
14.1 DAC介绍 235
14.2 STM32F407xx的DAC 236
14.3 软件触发方式 239
14.3.1 工程配置 239
14.3.2 DAC相关数据结构和API函数 240
14.3.3 软件触发方式代码解析 241
14.4 定时器触发方式 242
14.4.1 工程配置 243
14.4.2 定时器触发方式代码解析 243
14.5 DMA方式的DAC编程 244
14.5.1 工程配置 245
14.5.2 DMA方式的DAC转换代码解析 245
14.6 思考与练习 247

第15章 模数转换器 248
15.1 ADC介绍 248
15.2 STM32F407xx的ADC 249
15.3 多重ADC模式 255
15.4 软件触发数据采样 259
15.4.1 工程配置 259
15.4.2 ADC相关数据结构和API函数 262
15.4.3 软件触发数据采样代码解析 264
15.5 定时器触发数据采样 266
15.5.1 软件配置 266
15.5.2 定时器触发数据采样代码解析 267
15.6 规则组数据采样 268
15.6.1 工程配置 268
15.6.2 规则组数据采样代码解析 270
15.7 多重ADC模式数据采样 272
15.7.1 工程配置 272
15.7.2 ADC扩展的API函数 273
15.7.3 多重ADC模式数据采样代码解析 274
15.8 思考与练习 275

第16章 浮点运算与数字信号处理 276
16.1 Cortex-M4架构的浮点运算 276
16.1.1 定点数和浮点数 277
16.1.2 Cortex-M4的浮点运算单元 278
16.1.3 浮点运算编程 279
16.2 DSP指令集 281
16.2.1 DSP相关数据类型 282
16.2.2 DSP指令集 283
16.3 CMSIS-DSP库介绍 284
16.4 CMSIS-DSP库编程举例 286
16.4.1 向量运算 286
16.4.2 快速傅里叶变换 292
16.4.3 FIR滤波器 295
16.4.4 IIR滤波器 302
16.5 思考与练习 306

第17章 综合应用案例 307
17.1 智能小车的工作原理及编程 307
17.1.1 电机驱动模块 308
17.1.2 循迹检测模块 313
17.1.3 超声波测距模块 315
17.2 多任务环境下的智能小车控制程序 318
17.2.1 Keil RTX5 319
17.2.2 基于Keil RTX5的多任务编程 320
17.3 思考与练习 325

参考文献 326

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

梁晶:
2004年毕业于华中科技大学计算机学院嵌入式系统与智能控制专业,获工学硕士学位,武汉纺织大学计算机与人工智能学院专任教师,主要研究方向为嵌入式系统、人工智能、大数据技术。多年来在一线从事嵌入式系统、人工智能和大数据相关的教学和科研工作,主持和参与过多项校级、省级教研项目和科研项目。长期与企业合作从事嵌入式智能终端、车载互联网等产品的研发工作,在嵌入式领域具备较强的理论功底和丰富的工程经验。

吴银琴:
2003年毕业于华中科技大学生命科学与技术学院生物医学工程专业,获工学硕士学位,中南民族大学电子与信息工程学院专任教师,主要研究方向为嵌入式系统、信号处理等。多年来一直从事嵌入式系统、信号处理相关的教学和科研工作,主持和参与过多项教学改革项目、实验教改项目和科研项目,拥有丰富的教学经验。

购买本书用户

相关图书

人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部