《嵌入式系统实战指南:面向IoT应用》王蔚 | PDF下载|ePub下载
嵌入式系统实战指南:面向IoT应用 版权信息
- 出版社:机械工业出版社
- 出版时间:2022-03-01
- ISBN:9787111698784
- 条形码:9787111698784 ; 978-7-111-69878-4
嵌入式系统实战指南:面向IoT应用 本书特色
适读人群 :嵌入式系统行业的职场新手,有一定经验的嵌入式系统研发工程师本书是作者基于二十年来嵌入式系统研发经验而编写的一本适合新入职的应届生的面向实际工作、低门槛、系统性的学习宝典。书中内容强调实用性,充分结合实际工作场景,综合了很多项目实践中容易遇到的问题,目标是培养嵌入式系统研发工程师,因此包含硬件、软件等方面的实用内容,可称之为“软硬不分家”。其次,本书由浅入深,注重读者需求和阅读体验,并力求使用幽默、通俗的语言来进行讲解,通过类比等方法让读者更快地理解理论知识,轻松学习相关技能。
嵌入式系统实战指南:面向IoT应用 内容简介
本书的出发点是嵌入式系统的实际应用,因此涉及面比较广,为了控制篇幅,很多内容点到为止,但可以起到抛砖引玉的作用。本书首先对嵌入式系统做了定义,然后围绕该定义展开。全书分为三篇,第壹篇侧重于基础应用知识;第二篇是基于第壹篇的高阶应用知识,主要针对嵌入式操作系统;第三篇相对独立,对目前非常流行的低功耗蓝牙原理和应用做了介绍。本书的每一篇都有多个对应的例程,并使用了多种常见的软硬件。本书不但适合嵌入式系统行业的职场新手,也适合有一定经验的嵌入式系统研发工程师学习和参考,还可以作为自动控制、通信、应用电子、机电一体化等专业的教学用书。
嵌入式系统实战指南:面向IoT应用 目录
前言
**篇 核心篇
第1章 麻雀虽小,五脏俱全――什么是嵌入式系统2
1.1 嵌入式系统架构3
1.2 MCU架构4
1.3 内核架构7
第2章 大脑是人类与动物的主要区别所在――单片机架构9
2.1 计算机的发展9
2.2 单片机只能理解二进制“语言”11
2.3 输入/输出设备12
2.4 什么是总线13
2.5 数字电路大厦的砖块――锁存器15
第3章 象形文字的出现――汇编语言18
3.1 为何要了解汇编语言18
3.2 寄存器介绍18
3.3 什么是栈19
3.4 与栈的使用相关的四大原则22
3.5 其他内核寄存器23
3.6 常用汇编指令25
第4章 五脏六腑――单片机外围26
4.1 时钟――单片机的心脏26
4.2 标配外围1――Timer27
4.3 标配外围2――I2C总线接口29
4.4 标配外围3――UART/USART接口32
4.5 标配外围4――SPI33
4.6 标配外围5――DMA控制器36
4.7 标配外围6――GPIO37
4.8 扩展外围1――I2S控制器38
4.9 扩展外围2――USB控制器40
4.10 扩展外围3――以太网控制器42
4.11 扩展外围4――CAN控制器43
第5章 单片机开发环境44
5.1 开发环境安装44
5.2 认识学习板50
5.3 下载和调试53
第6章 大脑怎么思考――单片机如何运行57
6.1 从分析编译错误开始57
6.2 从汇编文件中探索59
第7章 现代语言的产生―― C语言70
7.1 解决编译错误71
7.2 复习一下C语言77
7.3 指针、结构体和链表80
第8章 Hello, World!95
8.1 单片机怎么实现printf()95
8.2 串口的使用97
第9章 中断99
9.1 中断是事件驱动的核心99
9.2 异常和中断99
9.3 按键中断102
目 录嵌入式系统实战指南:面向IoT应用第10章 I2C总线实验107
10.1 看一下原理图107
10.2 看一下数据手册108
10.3 准备一个新的工程112
10.4 开始工作115
第11章 其他总线实验131
11.1 SPIM之分散加载实验131
11.2 SPI总线实验137
11.3 USB总线实验144
第12章 DAC原理和实践154
12.1 DAC原理154
12.2 DAC实验155
第13章 ADC原理和实践162
13.1 逐次逼近型ADC原理163
13.2 ADC实验164
第14章 什么是傅里叶变换170
14.1 复变函数170
14.2 傅里叶级数171
14.3 傅里叶变换173
14.4 快速傅里叶变换175
第15章 傅里叶变换的C语言实现180
15.1 程序解析181
15.2 测试和分析188
第16章 印制电路板设计(PCB Layout)193
16.1 硬件设计从熟悉器件开始194
16.2 开始画板子196
第二篇 RTOS(实时操作系统)
第17章 人类吃了智慧果后做的**件事是用树叶做了件衣服――RTOS原理241
17.1 RTOS的发展241
17.2 RTOS的基本原理242
第18章 巧妇难为无米之炊――RT-Thread环境搭建245
18.1 工具软件准备245
18.2 编译工程251
18.3 调试工程253
第19章 障眼法――RTOS如何实现分身术256
19.1 线程调度256
19.2 创建用户线程261
第20章 三头六臂――一起做几个多线程的例程264
20.1 创建三个线程264
20.2 如何观察线程调度情况267
第21章 团结就是力量――线程之间的同步和通信270
21.1 线程同步270
21.2 线程通信274
第22章 开始烧脑――RTOS实践案例278
22.1 互斥量测试279
22.2 消息队列和邮箱测试283
第23章 节约是美德――内存管理288
23.1 内存堆管理289
23.2 内存池管理292
23.3 内存堆与内存池的区别293
23.4 动态内存分配实践293
第24章 家中有粮,心里不慌――中断管理296
24.1 运行模式和栈296
24.2 RTT中断处理过程297
24.3 RTT按键中断处理实例299
第25章 乾坤大挪移――内核移植304
25.1 线程调度的原理304
25.2 移植相关内容306
第26章 工欲善其事,必先利其器――Env辅助开发环境和FinSH控制台320
26.1 获取和配置320
26.2 使用和理解FinSH324
第27章 个人的一小步,人类的一大步――I/O设备管理330
27.1 I/O设备管理框架330
27.2 串口设备的管理332
27.3 GPIO的管理341
27.4 SPI设备管理344
27.5 I2C设备管理350
27.6 硬件Timer的使用353
第28章 一人之下,万人之上――虚拟文件系统356
28.1 RTT文件系统介绍356
28.2 文件系统的挂载357
28.3 格式化359
28.4 实验361
第29章 万物互联――网络框架367
29.1 RTT网络框架367
29.2 网络套接字371
29.3 套接字编程实例375
第三篇 BLE(低功耗蓝牙)
第30章 蓝牙初探380
30.1 蓝牙技术联盟381
30.2 历史版本382
30.3 历史版本更新383
30.4 常用无线协议比较394
第31章 BLE协议栈初探398
31.1 定义398
31.2 作用398
31.3 传播媒介399
31.4 传输单位399
31.5 结构399
第32章 物理层(Physical Layer,PHY)403
32.1 PHY403
32.2 频段(Band)403
32.3 频道(Channel)404
32.4 射频公差(Radio Frequency Tolerance)404
32.5 发射功率(Transmission Power)404
32.6 接收灵敏度(Receive Sensitivity)405
第33章 直接测试模式(Direct Test Mode,DTM)406
33.1 重要性406
33.2 使用方法411
33.3 测试项目412
33.4 实际问题413
第34章 链路层(Link Layer,LL)415
34.1 BLE设备地址(Device Address)415
34.2 物理频道(Physical Channel)417
34.3 状态(State)419
34.4 空中接口包(Air Interface Packet)格式420
34.5 Advertising Physical Channel PDU423
34.6 广播事件(Advertising Event)429
34.7 建立连接(Connection Setup)435
34.8 Data Physical Channel PDU437
34.9 连接事件(Connection Event)440
34.10 连接参数(Connection Parameter)441
第35章 主机控制器接口(Host Controller Interface,HCI)447
第36章 逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol,
L2CAP)449
第37章 通用属性配置(Generic Attribute Profile,GATT)与属性协议
(Attribute Protocol,ATT)451
37.1 Server与Client451
37.2 配置文件(Profile)与属性(Attribute)452
第38章 安全管理(Security Manager,SM)463
38.1 被动窃听与主动窃听463
38.2 密钥(Key)与编码(Encryption)464
38.3 配对(Pairing)465
第39章 通用访问配置(Generic Access Profile,GAP)475
39.1 角色(Role)476
39.2 设备地址(Device Address)与设备名称(Device Name)477
39.3 广播数据包格式477
39.4 发现模式与程序(Discovery Modes and Procedures)477
39.5 安全模式(Security Mode)478
第40章 BLE编程实例479
40.1 设备系统架构479
40.2 硬件480
40.3 软件480
40.4 准备工作480
40.5 编程实例484
40.6 习题500
**篇 核心篇
第1章 麻雀虽小,五脏俱全――什么是嵌入式系统2
1.1 嵌入式系统架构3
1.2 MCU架构4
1.3 内核架构7
第2章 大脑是人类与动物的主要区别所在――单片机架构9
2.1 计算机的发展9
2.2 单片机只能理解二进制“语言”11
2.3 输入/输出设备12
2.4 什么是总线13
2.5 数字电路大厦的砖块――锁存器15
第3章 象形文字的出现――汇编语言18
3.1 为何要了解汇编语言18
3.2 寄存器介绍18
3.3 什么是栈19
3.4 与栈的使用相关的四大原则22
3.5 其他内核寄存器23
3.6 常用汇编指令25
第4章 五脏六腑――单片机外围26
4.1 时钟――单片机的心脏26
4.2 标配外围1――Timer27
4.3 标配外围2――I2C总线接口29
4.4 标配外围3――UART/USART接口32
4.5 标配外围4――SPI33
4.6 标配外围5――DMA控制器36
4.7 标配外围6――GPIO37
4.8 扩展外围1――I2S控制器38
4.9 扩展外围2――USB控制器40
4.10 扩展外围3――以太网控制器42
4.11 扩展外围4――CAN控制器43
第5章 单片机开发环境44
5.1 开发环境安装44
5.2 认识学习板50
5.3 下载和调试53
第6章 大脑怎么思考――单片机如何运行57
6.1 从分析编译错误开始57
6.2 从汇编文件中探索59
第7章 现代语言的产生―― C语言70
7.1 解决编译错误71
7.2 复习一下C语言77
7.3 指针、结构体和链表80
第8章 Hello, World!95
8.1 单片机怎么实现printf()95
8.2 串口的使用97
第9章 中断99
9.1 中断是事件驱动的核心99
9.2 异常和中断99
9.3 按键中断102
目 录嵌入式系统实战指南:面向IoT应用第10章 I2C总线实验107
10.1 看一下原理图107
10.2 看一下数据手册108
10.3 准备一个新的工程112
10.4 开始工作115
第11章 其他总线实验131
11.1 SPIM之分散加载实验131
11.2 SPI总线实验137
11.3 USB总线实验144
第12章 DAC原理和实践154
12.1 DAC原理154
12.2 DAC实验155
第13章 ADC原理和实践162
13.1 逐次逼近型ADC原理163
13.2 ADC实验164
第14章 什么是傅里叶变换170
14.1 复变函数170
14.2 傅里叶级数171
14.3 傅里叶变换173
14.4 快速傅里叶变换175
第15章 傅里叶变换的C语言实现180
15.1 程序解析181
15.2 测试和分析188
第16章 印制电路板设计(PCB Layout)193
16.1 硬件设计从熟悉器件开始194
16.2 开始画板子196
第二篇 RTOS(实时操作系统)
第17章 人类吃了智慧果后做的**件事是用树叶做了件衣服――RTOS原理241
17.1 RTOS的发展241
17.2 RTOS的基本原理242
第18章 巧妇难为无米之炊――RT-Thread环境搭建245
18.1 工具软件准备245
18.2 编译工程251
18.3 调试工程253
第19章 障眼法――RTOS如何实现分身术256
19.1 线程调度256
19.2 创建用户线程261
第20章 三头六臂――一起做几个多线程的例程264
20.1 创建三个线程264
20.2 如何观察线程调度情况267
第21章 团结就是力量――线程之间的同步和通信270
21.1 线程同步270
21.2 线程通信274
第22章 开始烧脑――RTOS实践案例278
22.1 互斥量测试279
22.2 消息队列和邮箱测试283
第23章 节约是美德――内存管理288
23.1 内存堆管理289
23.2 内存池管理292
23.3 内存堆与内存池的区别293
23.4 动态内存分配实践293
第24章 家中有粮,心里不慌――中断管理296
24.1 运行模式和栈296
24.2 RTT中断处理过程297
24.3 RTT按键中断处理实例299
第25章 乾坤大挪移――内核移植304
25.1 线程调度的原理304
25.2 移植相关内容306
第26章 工欲善其事,必先利其器――Env辅助开发环境和FinSH控制台320
26.1 获取和配置320
26.2 使用和理解FinSH324
第27章 个人的一小步,人类的一大步――I/O设备管理330
27.1 I/O设备管理框架330
27.2 串口设备的管理332
27.3 GPIO的管理341
27.4 SPI设备管理344
27.5 I2C设备管理350
27.6 硬件Timer的使用353
第28章 一人之下,万人之上――虚拟文件系统356
28.1 RTT文件系统介绍356
28.2 文件系统的挂载357
28.3 格式化359
28.4 实验361
第29章 万物互联――网络框架367
29.1 RTT网络框架367
29.2 网络套接字371
29.3 套接字编程实例375
第三篇 BLE(低功耗蓝牙)
第30章 蓝牙初探380
30.1 蓝牙技术联盟381
30.2 历史版本382
30.3 历史版本更新383
30.4 常用无线协议比较394
第31章 BLE协议栈初探398
31.1 定义398
31.2 作用398
31.3 传播媒介399
31.4 传输单位399
31.5 结构399
第32章 物理层(Physical Layer,PHY)403
32.1 PHY403
32.2 频段(Band)403
32.3 频道(Channel)404
32.4 射频公差(Radio Frequency Tolerance)404
32.5 发射功率(Transmission Power)404
32.6 接收灵敏度(Receive Sensitivity)405
第33章 直接测试模式(Direct Test Mode,DTM)406
33.1 重要性406
33.2 使用方法411
33.3 测试项目412
33.4 实际问题413
第34章 链路层(Link Layer,LL)415
34.1 BLE设备地址(Device Address)415
34.2 物理频道(Physical Channel)417
34.3 状态(State)419
34.4 空中接口包(Air Interface Packet)格式420
34.5 Advertising Physical Channel PDU423
34.6 广播事件(Advertising Event)429
34.7 建立连接(Connection Setup)435
34.8 Data Physical Channel PDU437
34.9 连接事件(Connection Event)440
34.10 连接参数(Connection Parameter)441
第35章 主机控制器接口(Host Controller Interface,HCI)447
第36章 逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol,
L2CAP)449
第37章 通用属性配置(Generic Attribute Profile,GATT)与属性协议
(Attribute Protocol,ATT)451
37.1 Server与Client451
37.2 配置文件(Profile)与属性(Attribute)452
第38章 安全管理(Security Manager,SM)463
38.1 被动窃听与主动窃听463
38.2 密钥(Key)与编码(Encryption)464
38.3 配对(Pairing)465
第39章 通用访问配置(Generic Access Profile,GAP)475
39.1 角色(Role)476
39.2 设备地址(Device Address)与设备名称(Device Name)477
39.3 广播数据包格式477
39.4 发现模式与程序(Discovery Modes and Procedures)477
39.5 安全模式(Security Mode)478
第40章 BLE编程实例479
40.1 设备系统架构479
40.2 硬件480
40.3 软件480
40.4 准备工作480
40.5 编程实例484
40.6 习题500
嵌入式系统实战指南:面向IoT应用 作者简介
王蔚,在嵌入式系统行业工作至今已有20年工作经验,先后接触过从8位机、16位机、32位机,直到ARM架构的各类型单片机和嵌入式系统。熟悉汇编语言、精通C语言和嵌入式操作系统。曾在多个知名外企担任应用工程师,面向工业、消费类、通信等多个行业。熟悉产品的设计、研发和生产等多个环节。
发表回复
要发表评论,您必须先登录。