第 1 章 FreeRTOS 发行版 / 1
1.1 本章知识点及学习目标 / 1
1.2 了解 FreeRTOS 发行版 / 1
1.3 演示程序 / 5
1.4 创建 FreeRTOS 工程 / 6
1.5 数据类型和编码风格指南 / 8
第 2 章 堆内存管理 / 11
2.1 本章知识点及学习目标 / 11
2.2 内存分配方案示例 / 12
2.3 与堆相关的实用函数 / 22
第 3 章 任务管理 / 25
3.1 本章知识点及学习目标 / 25
3.2 任务函数 / 25
3.3 顶层任务状态 / 26
3.4 创建任务 / 27
3.5 任务优先级 / 34
3.6 时间测量和滴答中断 / 35
3.7 扩展“非运行”状态 / 38
3.8 空闲任务和空闲任务钩子 / 46
3.9 更改任务的优先级 / 49
3.10 删除任务 / 53
3.11 线程本地存储 / 57
3.12 调度算法 / 59
第 4 章 队列管理 / 69
4.1 本章知识点及学习目标 / 69
4.2 队列的特点 / 69
4.3 使用队列 / 72
4.4 从多个来源接收数据 / 79
4.5 处理大数据或可变大小的数据 / 86
4.6 从多队列接收 / 91
4.7 使用队列创建邮箱 / 99
第 5 章 软件定时器管理 / 103
5.1 本章知识点及学习目标 / 103
5.2 软件定时器回调函数 / 103
5.3 软件定时器的属性和状态 / 104
5.4 软件定时器的上下文 / 106
5.5 创建和启动软件定时器 / 109
5.6 定时器 ID / 115
5.7 更改定时器的周期 / 117
5.8 重置软件定时器 / 120
第 6 章 中断管理 / 125
6.1 本章知识点及学习目标 / 125
6.2 在 ISR 中使用 FreeRTOS API / 126
6.3 推迟中断处理 / 129
6.4 用于同步的二进制信号量 / 130
6.5 计数信号量 / 143
6.6 推迟工作到 RTOS 守护任务 / 147
6.7 在中断服务程序中使用队列 / 152
6.8 中断嵌套 / 158
第 7 章 资源管理 / 163
7.1 本章知识点及学习目标 / 163
7.2 临界区和暂停调度器 / 166
7.3 互斥量(和二进制信号量) / 169
7.4 守门人任务 / 182
第 8 章 事件组 / 187
8.1 本章知识点及学习目标 / 187
8.2 事件组的特征 / 188
8.3 使用事件组进行事件管理 / 189
8.4 使用事件组进行任务同步 / 199
第 9 章 任务通知 / 207
9.1 本章知识点及学习目标 / 207
9.2 任务通知:优势和局限 / 208
9.3 使用任务通知 / 209
第 10 章 低功耗支持 / 233
10.1 本章知识点及学习目标 / 233
10.2 节能及与节能有关的宏 / 233
10.3 ARM Cortex-M 微控制器的低功耗实现 / 236
第 11 章 开发者支持 / 241
11.1 本章知识点及学习目标 / 241
11.2 configASSERT() / 241
11.3 FreeRTOS+Trace / 243
11.4 与调试相关的钩子(回调)函数 / 246
11.5 查看运行时信息和任务状态信息 / 246
11.6 跟踪钩子宏 / 254
第 12 章 故障排除 / 259
12.1 本章知识点及学习目标 / 259
12.2 中断优先级 / 259
12.3 栈溢出 / 260
12.4 函数 printf()和 sprintf()的不当使用 / 262
12.5 错误的其他常见来源 / 263
附录 A FreeRTOS 的新版本和新特性 / 265
A.1 FreeRTOS 版本 9 / 265
A.2 FreeRTOS 版本 10 / 268
展开