FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统(第2版)
举报
正版全新
-
作者:
吉姆·尤尔(Jim Yuill)、彭恩·林德(Penn Linder)
-
出版社:
人民邮电出版社
-
ISBN:
9787115704047
-
出版时间:
2022-12
-
装帧:
平装
-
开本:
16开
-
作者:
吉姆·尤尔(Jim Yuill)、彭恩·林德(Penn Linder)
-
出版社:
人民邮电出版社
-
ISBN:
9787115704047
-
出版时间:
2022-12
售价
¥
90.51
7.0折
定价
¥128.80
品相
全新
上书时间2026-09-21
卖家超过10天未登录
-
-
商品描述:
-
【书 名】 FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统(第2版)
【书 号】 9787115704047
【出 版 社】 人民邮电出版社
【作 者】 吉姆·尤尔(Jim Yuill)、彭恩·林德(Penn Linder)
【出版日期】 2026-09-01
【开 本】 16开
【定 价】 128.80元
【内容简介】
随着嵌入式技术飞速发展,实时操作系统已成为嵌入式产品开发的核心基础,FreeRTOS凭借轻量化、高可靠性、易用性等优势,被广泛应用于各类单片机项目中。在实际开发中,如何合理运用RTOS任务、通信组件、同步机制,结合硬件外设驱动完成系统搭建,并做好内存管控、问题调试,是嵌入式开发人员必须掌握的核心技能。
《FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统(第2版)》围绕FreeRTOS展开全面讲解,共分为5个部分。第1部分介绍RTOS、配套开发板与开发工具,讲解裸机开发中经典的超级循环结构,为后续学习筑牢基础;第 2 部分聚焦FreeRTOS核心能力,详解调度器、任务、同步机制与任务间通信相关API;第3部分结合硬件实战,讲解基于FreeRTOS开发UART、USB等外设驱动的方法,演示任务、中断、DMA的协同使用,并讲解松耦合架构设计;第4部分讲解FreeRTOS内存管理、多核/多处理器应用以及系统故障排查与调试技巧;第5部分为参考附录,提供开发工具速查、配套参考资料,以及FreeRTOS项目的创建与安装方法。
《FreeRTOS实战:用STM32+SEGGER打造工业级实时嵌入式系统(第2版)》内容由浅入深、理论结合实战,既适合嵌入式系统入门者从零学习RTOS与FreeRTOS开发,也可供具备一定经验的嵌入式工程师参考,用于提升FreeRTOS项目开发、驱动设计与系统调试能力。
【目录】
第 1 部分RTOS、开发板与工具简介
第 1 章实时系统简介 ..................... 2
1.1究竟什么是“实时”............. 2
1.1.1 时序要求的范围......... 3
1.1.2 保证实时行为的方法 5
1.2硬件与软件在实时系统中的作用........................ 5
1.2.1 纯硬件实现................. 5
1.2.2 底层固件实现............. 6
1.2.3 基于 RTOS 的固件..... 6
1.2.4 基于 RTOS 的软件..... 7
1.2.5 精心设计的操作系统软件 ....................... 7
1.3 RTOS 的定义 .......................... 8
1.3.1 硬实时系统................. 9
1.3.2 固实时系统................. 9
1.3.3软实时系统............... 10
1.4实际应用中的实时系统....... 10
1.4.1RTOS 的类型范围.... 10
1.4.2 本书使用的 RTOS.... 11
1.5选择 RTOS ............................ 12
1.6总结 ........ 13
第 2 章开发板简介 ........................ 15
2.1开发板概述 ........................... 15
2.2了解开发板的组件 ............... 17
2.2.1MCU ......................... 17
2.2.2CPU ........................... 18
2.2.3MCU 区域的其他组件 ........................... 19
2.2.4ST-LINK 调试探针 .. 19
2.3.1MCU 产品系列 ........ 23
2.3.2MCU 型号命名规则 24
2.3.3 开发板产品系列与型号命名规则 ......... 24
2.4总结 ........ 25
第 3 章开发工具介绍 ................... 26
3.1本书说明与示例程序的使用方法...................... 27
3.2 IDE 与示例程序 ................... 28
3.2.1STM32CubeIDE 简介 ............................. 28
3.2.2STM32CubeIDE 的安装 ......................... 28
3.2.3 本书示例程序的安装 ............................. 29
3.2.4Project Explorer 的使用 .......................... 32
3.2.5 编辑器的使用........... 32
3.2.6 项目的构建............... 33
3.3 J-Link、Ozone 与 SystemView 等调试工具 ..... 33
3.3.1SEGGER J-Link 的使用 ......................... 34
3.3.2 工具的下载与安装... 34
3.3.3 将 ST-LINK 转换为 J-Link ..................... 34
3.3.4SEGGER Ozone 的使用 ......................... 35
3.3.5SEGGER SystemView 的使用................ 39
3.4总结 ........ 42
第 4 章理解超级循环 ................... 43
4.1超级循环简介 ....................... 43
4.1.1 基本的超级循环....... 44
4.1.2 实时系统中的超级循环 ......................... 45
4.2利用中断改进超级循环....... 46
4.2.1 中断简介................... 46
4.2.2 理解 ISR 与抖动 ...... 47
4.2.3 中断与超级循环....... 48
4.3为超级循环添加定时器....... 49
4.3.1 让定时超级循环进入休眠状态 ............. 50
4.3.2 利用定时超级循环的特性 ..................... 52
4.3.3 时序相关的性能分析 ............................. 55
4.4总结 ........ 56
第 5 章实现超级循环 ................... 57
5.1超级循环示例程序 ............... 57
5.1.2 示例程序的工作原理 ............................. 58
5.1.3 设计与测试注意事项 ............................. 65
5.1.4 运行示例程序........... 66
5.2了解系统 API 与硬件特性 .. 67
5.2.1HAL_DBGMCU_EnableDBGSleepMode ............................. 67
5.2.2 disable_irq ............. 68
5.3超级循环程序的开发方法... 70
5.3.1 创建超级循环程序... 70
5.3.2 安装并配置调试器软件 ......................... 74
5.3.3 构建并运行固件....... 76
5.3.4 使用示波器测量时序 ............................. 76
5.4总结 ........ 78
第 2 部分FreeRTOS 调度器、任务与核心 API
第 6 章理解 RTOS 任务............. 80
6.1 FreeRTOS 调度器与任务:概念概述................ 81
6.1.1为何需要舍弃单纯的超级循环 ............. 81
6.1.2RTOS 任务与超级循环函数的对比 ...... 82
6.1.3 将超级循环函数转换为 RTOS 任务 ..... 83
6.2选择 FreeRTOS 作为 RTOS . 88
6.3 FreeRTOS 调度器与任务实战............................ 89
6.3.1 示例程序的理解与使用 ......................... 89
6.3.2FreeRTOS 的安装与配置 ....................... 98
6.4总结 ...... 100
第 7 章运行 FreeRTOS 调度器 ........................... 101
7.1创建任务与启动调度器..... 102
7.1.1 初始化硬件............. 102
7.1.2 定义任务函数......... 102
7.1.3 创建任务................. 105
7.1.4 检查返回值............. 106
7.1.5 启动调度器............. 107
7.2删除任务 ............................. 108
7.2.1 任务自行删除......... 108
7.2.2 从其他任务删除任务 ........................... 108
7.3代码实践 ............................. 109
7.3.1 构建并运行代码....................... 109
7.3.2Ozone 的其他功能 . 110
7.3.3 使用 SystemView 分析任务执行 ......... 111
7.4理解调度器 ......................... 113
7.4.1 理解 FreeRTOS 任务的状态 ................ 114
7.4.2 空闲任务................. 115
7.4.3 调度器的运行机制与运行时机 ........... 117
7.4.4 调度器架构............. 118
7.5任务实现与问题排查......... 120
7.5.1 任务内存分配......... 120
7.5.2 内存保护任务的创建 ........................... 121
7.5.3 任务创建方式汇总. 121
7.5.4 优化任务状态......... 122
7.5.5 任务启动问题排查. 123
7.6总结 ...... 125
第 8 章数据保护与任务同步 .... 126
8.1运行本章的示例程序......... 126
8.2信号量—用于任务同步. 128
8.2.1 理解信号量............. 128
8.2.2 使用信号量............. 131
8.3优先级翻转—信号量的错误使用方式........ 140
8.3.1 理解优先级翻转..... 140
8.3.2 优先级翻转示例程序 ........................... 141
8.4互斥锁—增强型信号量. 145
8.4.1 理解互斥锁............. 145
8.4.2 解决优先级翻转的示例程序 ............... 146
8.4.3 避免互斥锁获取超时 ........................... 148
8.5竞态条件—任务未正确同步时引发............ 149
8.5.1 使用互斥锁和信号量避免竞态条件 ... 149
8.5.2 竞态条件示例......... 150
8.6软件定时器 ......................... 152
8.6.1 理解软件定时器..... 152
8.6.2示例程序:一次性定时器与周期性定时器 ...................... 153
8.6.3 软件定时器使用准则 ........................... 156
8.7总结 ...... 157
第 9 章任务间通信...................... 158
9.1理解 RTOS 队列 ................. 158
9.1.2 简单队列:接收数据项 ....................... 159
9.1.3 满队列:发送数据项 ........................... 159
9.1.4 空队列:接收数据项 ........................... 160
9.1.5 用于任务间通信的队列 ....................... 161
9.2通过队列按值传递数据..... 162
9.2.1 按值传递 1 字节数据 ........................... 163
9.2.2 按值传递复合数据类型 ....................... 165
9.2.3 理解队列对执行流程的影响 ............... 168
9.2.4 示例的重要说明..... 169
9.3通过队列按引用传递数据. 170
9.3.1 何时按引用传递..... 170
9.3.2 按值传递................. 171
9.3.3 按引用传递............. 171
9.3.4 重要说明................. 173
9.4任务通知 ............................. 173
9.4.1 使用任务通知传递简单数据 ............... 174
9.4.2 任务通知的其他操作 ........................... 175
9.4.3 任务通知与队列的对比 ....................... 175
9.4.4 索引式任务通知..... 176
9.5总结 ...... 177
第 3 部分利用 FreeRTOS 构建系统
第 10 章驱动程序与 ISR .......... 180
10.1UART 简介 ....................... 180
10.2创建轮询式 UART 驱动程序 ......................... 185
10.2.1 理解示例程序 ..... 185
10.2.2 运行示例程序 ..... 186
10.2.3 性能分析 ............. 187
10.2.4 轮询式驱动程序的优缺点 ................ 189
10.2.5 轮询式驱动程序的适用场景 ............ 189
10.3FreeRTOS 任务与 ISR 的对比 ....................... 190
10.3.1 任务与 ISR 的区别............................ 190
10.3.2 在 ISR 中调用 FreeRTOS API .......... 192
10.3.3 配置用于 FreeRTOS 的中断 ............. 192
10.4创建基于 ISR 的驱动程序 ............................. 195
10.4.1 基于队列的驱动程序 ........................ 195
10.4.3 基于缓冲区的驱动程序 .................... 201
10.4.4 性能分析 ............. 204
10.5总结 .... 205
第 11 章更高效的驱动程序与 ISR ....................... 206
11.1 构建基础的基于 DMA 的驱动程序 .............. 206
11.1.1 DMA 概念介绍... 207
11.1.2 配置 DMA 外设.. 208
11.1.3 启动 DMA 接收.. 212
11.1.4 基于 DMA 的缓冲区驱动程序......... 213
11.1.5 性能分析 ............. 214
11.2 构建增强型的基于 DMA 的驱动程序 .......... 217
11.2.1 流缓冲区介绍 ..... 217
11.2.2 双缓冲 DMA 介绍............................. 220
11.2.3 驱动程序的实现 . 221
11.2.4 流缓冲区的优化方案 ........................ 227
11.3 驱动模型的选择 ............... 228
11.3.1 驱动模型选型的核心问题 ................ 228
11.3.2 驱动模型选型的经验法则 ................ 231
11.4 选用第三方库和驱动程序 .............................. 232
11.5 总结 .... 233
第 12 章在任务间共享硬件外设 ............................ 234
12.1理解 USB 消息的发送机制 ............................ 235
12.2使用简易的 USB API 发送消息..................... 237
12.2.1 理解代码 ............. 237
12.2.2 运行代码 ............. 239
12.2.3 代码分析 ............. 239
12.2.4 代码改进方案 ..... 240
12.3基于流缓冲区实现 VCP 驱动 ........................ 241
12.3.1 理解应用程序 ..... 241
12.3.2 理解驱动程序 ..... 242
12.3.3 运行代码 ............. 245
12.3.4 分析驱动程序 ..... 246
12.4增强 VCP 驱动以支持多任务调用 ................ 246
12.4.1 理解应用程序 ..... 246
12.4.2 理解驱动程序 ..... 248
12.4.3 性能数据的采集机制 ........................ 256
第 13 章利用队列实现松耦合 . 261
13.1创建命令队列 ................... 261
13.1.1 LED 的亮度函数 263
13.1.2 确定队列内容 ..... 264
13.1.3 定义架构 ............. 264
13.1.4 使用代码 ............. 271
13.2为新目标重用队列定义... 272
13.2.1 队列接口 ............. 273
13.2.2 iPWM 接口 ......... 273
13.3理解队列作为接口的作用.............................. 274
13.4总结 .... 275
第 4 部分系统设计与故障排除
第 14章 FreeRTOS 内存管理 .............................. 278
14.1理解内存分配 ................... 278
14.1.1 静态内存 ............. 279
14.1.2 栈内存 ................. 279
14.1.3 堆内存 ................. 280
14.1.4 堆碎片 ................. 281
14.2FreeRTOS 原语的静态分配与动态分配........ 282
14.2.1 动态分配示例 ..... 28
孔网啦啦啦啦啦纺织女工火锅店第三课
开播时间:09月02日 10:30
即将开播,去预约

直播中,去观看