第1章 FreeRTOS簡介 1
1.1 初識FreeRTOS 1
1.1.1 什么是FreeRTOS 1
1.1.2 為什么選擇FreeRTOS 2
1.1.3 FreeRTOS的特點 2
1.1.4 商業(yè)許可 2
1.2 磨刀不誤砍柴工 3
1.2.1 查找資料 3
1.2.2 FreeRTOS官方文檔 5
1.2.3 Cortex M 架構資料 7
1.3 FreeRTOS源碼初探 7
1.3.1 FreeRTOS源碼下載 7
1.3.2 FreeRTOS文件預覽 9
第2章 FreeRTOS移植 11
2.1 FreeRTOS移植 11
2.1.1 移植前準備 11
2.1.2 添加FreeRTOS文件 12
2.1.3 修改SYSTEM 文件 15
2.1.4 修改中斷相關文件 22
2.1.5 可選步驟(建議完成) 24
2.1.6 添加應用程序 25
2.1.7 使用AC6編譯工程(擴展) 32
2.2 FreeRTOS移植實驗 33
2.2.1 功能設計 33
2.2.2 軟件設計 34
2.2.3 下載驗證 35
第3章 FreeRTOS系統配置 37
3.1 FreeRTOSConfig.h文件 37
3.2 config配置項 37
3.2.1 基礎配置項 矯p扷CRS翪38
3.2.2 內存分配相關定義 40
3.2.3 鉤子函數相關定義 41
3.2.4 運行時間和任務狀態(tài)統計相關定義 42
3.2.5 協程相關定義 43
3.2.6 軟件定時器相關定義 43
3.2.7 中斷嵌套行為配置 43
3.2.8 斷 言 44
3.2.9 FreeRTOS MPU特殊定義 44
3.3 INCLUDE配置項 45
3.4 其他配置項 46
第4章 FreeRTOS中斷管理 47
4.1 ARM Cortex M 中斷 47
4.1.1 簡 介 47
4.1.2 中斷優(yōu)先級管理 47
4.1.3 3個系統中斷優(yōu)先級配置寄存器 49
4.1.4 3個中斷屏蔽寄存器 50
4.1.5 中斷控制狀態(tài)寄存器 52
4.2 FreeRTOS中斷配置項 52
4.3 FreeRTOS中斷管理詳解 54
4.3.1 PendSV和SysTick中斷優(yōu)先級 54
4.3.2 FreeRTOS開關中斷 55
4.3.3 FreeRTOS進出臨界區(qū) 56
4.4 FreeRTOS中斷測試實驗 59
4.4.1 功能設計 59
4.4.2 軟件設計 59
4.4.3 下載驗證 62
第5章 FreeRTOS任務基礎知識 63
5.1 單任務和多任務系統 63
5.1.1 單任務系統 63
5.1.2 多任務系統 64
5.2 FreeRTOS任_____羅_務狀態(tài) 65
5.3 FreeRTOS任務優(yōu)先級 66
5.4 FreeRTOS任務調度方式 67
5.5 FreeRTOS任務控制塊 68
5.6 FreeRTOS任務棧 69
第6章 FreeRTOS任務相關API函數 71
6.1 FreeRTOS創(chuàng)建和刪除任務相關 API函數 71
6.2 FreeRTOS任務創(chuàng)建與刪除實驗(動態(tài)方法) 75
6.2.1 功能設計 75
6.2.2 軟件設計 75
6.2.3 下載驗證 78
6.3 FreeRTOS任務創(chuàng)建與刪除實驗(靜態(tài)方法) 79
6.3.1 功能設計 79
6.3.2 軟件設計 79
6.3.3 下載驗證 83
6.4 FreeRTOS掛起和恢復任務相關 API函數 84
6.5 FreeRTOS任務掛起與恢復實驗 85
6.5.1 功能設計 85
6.5.2 軟件設計 86
6.5.3 下載驗證 89
第7章 FreeRTOS列表和列表項 90
7.1 FreeRTOS列表和列表項簡介 90
7.1.1 列 表 90
7.1.2 列表項 91
7.1.3 迷你列表項 92
7.2 FreeRTOS列表和列表項相關 API函數 92
7.3 FreeRTOS操作列表和列表項的宏 98
7.4 FreeRTOS列表項的插入與刪除實驗 99
7.4.1 功能設計 99
7.4.2 軟件設計 99
7.4.3 下載驗證 102
第8章 FreeRTOS系統啟動流程及任務相關函數解析 107
8.1 FreeRTOS開啟任務調度器 107
8.1.1 函數vTaskStartScheduler() 107
8.1.2 函數xPortStartScheduler() 110
8.2 FreeRTOS啟動個任務 112
8.2.1 函數prvStartFirstTask() 112
8.2.2 函數vPortSVCHandler() 113
8.3 FreeRTOS任務狀態(tài)列表 115
8.4 FreeRTOS創(chuàng)建任務函數解析 116
8.5 FreeRTOS刪除任務函數解析 127
FreeRTOS源碼詳解與應用開發(fā)基于STM32(第2版)
8.6 FreeRTOS掛起任務函數解析 130
8.7 FreeRTOS恢復任務函數解析 134
8.8 FreeRTOS空閑任務 135
第9章 FreeRTOS任務切換 137
9.1 PendSV異常 137
9.2 PendSV中斷服務函數 139
9.3 FreeRTOS確定下一個要運行的任務 143
9.4 PendSV異常何時觸發(fā) 145
9.5 FreeRTOS時間片調度實驗 146
9.5.1 功能設計 146
9.5.2 軟件設計 147
9.5.3 下載驗證 149
第10章 FreeRTOS內核控制函數 150
10.1 FreeRTOS內核控制函數預覽 150
10.2 FreeRTOS內核控制函數詳解 151
第11章 FreeRTOS其他任務API函數 156
11.1 FreeRTOS任務相關API函數 156
11.1.1 FreeRTOS任務相關API函數預覽 156
11.1.2 FreeRTOS任務相關API函數詳解 157
11.2 FreeRTOS任務狀態(tài)與信息查詢實驗 166
11.2.1 功能設計 166
11.2.2 軟件設計 166
11.2.3 下載驗證 170
11.3 FreeRTOS任務運行時間統計實驗 172
11.3.1 功能設計 172
11.3.2 軟件設計 172
11.3.3 下載驗證 176
第12章 FreeRTOS時間管理 178
12.1 FreeRTOS系統時鐘節(jié)拍 178
12.1.1 FreeRTOS系統時鐘節(jié)拍簡介 178
12.1.2 FreeRTOS系統時鐘節(jié)拍來源 178
12.1.3 FreeRTOS系統時鐘節(jié)拍處理 180
12.2 FreeRTOS任務延時函數 185
第13章 FreeRTOS隊列 193
13.1 FreeRTOS隊列簡介 193
13.2 FreeRTOS隊列相關API函數 196
13.2.1 隊列結構體 196
13.2.2 創(chuàng)建隊列 197
13.2.3 隊列寫入消息 205
13.2.4 隊列讀取消息 215
13.2.5 隊列鎖 217
13.3 FreeRTOS隊列操作實驗 220
13.3.1 功能設計 220
13.3.2 軟件設計 220
13.3.3 下載驗證 223
13.4 FreeRTOS隊列集 223
13.5 FreeRTOS隊列集相關API函數 224
13.6 FreeRTOS隊列集操作實驗 228
13.6.1 功能設計 228
13.6.2 軟件設計 229
13.6.3 下載驗證 232
13.7 FreeRTOS隊列集模擬事件標志位實驗 234
13.7.1 功能設計 234
13.7.2 軟件設計 234
13.7.3 下載驗證 237
第14章 FreeRTOS信號量 239
14.1 FreeRTOS信號量簡介 239
14.2 FreeRTOS二值信號量 240
14.2.1 FreeRTOS二值信號量簡介 240
14.2.2 FreeRTOS二值信號量相關 API函數 240
14.3 FreeRTOS二值信號量操作實驗 249
14.3.1 功能設計 249
14.3.2 軟件設計 249
14.3.3 下載驗證 252
14.4 FreeRTOS計數型信號量 253
14.4.1 FreeRTOS計數型信號量簡介 253
14.4.2 FreeRTOS計數型信號量相關API函數 253
14.5 FreeRTOS計數型信號量操作實驗 255
14.5.1 功能設計 255
14.5.2 軟件設計 255
14.5.3 下載驗證 258
14.6 優(yōu)先級翻轉 258
14.7 優(yōu)先級翻轉實驗 260
14.7.1 功能設計 260
14.7.2 軟件設計 260
14.7.3 下載驗證 263
14.8 FreeRTOS互斥信號量 264
14.8.1 FreeRTOS互斥信號量簡介 264
14.8.2 FreeRTOS互斥信號量相關 API函數 264
14.9 FreeRTOS互斥信號量操作實驗 266
14.9.1 功能設計 266
14.9.2 軟件設計 267
14.9.3 下載驗證 269
14.10 FreeRTOS遞歸互斥信號量 270
14.10.1 FreeRTOS遞歸互斥信號量簡介 270
14.10.2 FreeRTOS遞歸互斥信號量相關API函數 271
14.10.3 FreeRTOS遞歸互斥信號量的使用示例 273
第15章 FreeRTOS軟件定時器 275
15.1 FreeRTOS軟件定時器簡介 275
15.1.1 FreeRTOS軟件定時器服務任務簡介 276
15.1.2 軟件定時器命令隊列 276
15.1.3 軟件定時器的狀態(tài) 276
15.1.4 單次定時器和周期定時器 277
15.1.5 軟件定時器的狀態(tài)轉換圖 278
15.1.6 復位軟件定時器 278
15.2 FreeRTOS軟件定時器相關配置 279
15.3 FreeRTOS軟件定時器相關API函數 279
15.4 FreeRTOS軟件定時器實驗 286
15.4.1 功能設計 286
15.4.2 軟件設計 286
15.4.3 下載驗證 289
第16章 FreeRTOS事件標志組 291
16.1 FreeRTOS事件標志組簡介 291
16.2 FreeRTOS事件標志組相關API函數 292
16.3 FreeRTOS事件標志組實驗 298
16.3.1 功能設計 298
16.3.2 軟件設計 298
16.3.3 下載驗證 301
第17章 FreeRTOS任務通知 303
17.1 FreeRTOS任務通知簡介 303
17.1.1 任務通知的優(yōu)勢 304
17.1.2 任務通知的缺點 304
17.2 FreeRTOS任務通知相關API函數 305
17.3 FreeRTOS任務通知模擬二值信號量實驗 321
17.3.1 功能設計 321
17.3.2 軟件設計 321
17.3.3 下載驗證 324
17.4 FreeRTOS任務通知模擬計數型信號量實驗 324
17.4.1 功能設計 324
17.4.2 軟件設計 324
17.4.3 下載驗證 327
17.5 FreeRTOS任務通知模擬消息郵箱實驗 328
17.5.1 功能設計 328
17.5.2 軟件設計 328
17.5.3 下載驗證 331
17.6 FreeRTOS任務通知模擬事件標志組實驗 332
17.6.1 功能設計 332
17.6.2 軟件設計 332
17.6.3 下載驗證 335
第18章 FreeRTOS低功耗Tickless模式 337
18.1 FreeRTOS低功耗Tickless模式簡介 337
18.1.1 空閑任務中的低功耗Tickless處理 337
18.1.2 函數portSUPPRESS_TICKS_AND_SLEEP() 339
18.2 FreeRTOS低功耗Tickless模式相關配置項 340
18.3 FreeRTOS低功耗Tickless實驗 340
18.3.1 功能設計 340
18.3.2 軟件設計 341
18.3.3 下載驗證 344
第19章 FreeRTOS空閑任務 345
19.1 FreeRTOS空閑任務詳解 345
19.1.1 FreeRTOS空閑任務簡介 345
19.1.2 FreeRTOS空閑任務的創(chuàng)建 345
19.1.3 FreeRTOS空閑任務的任務函數 346
19.2 FreeRTOS空閑任務鉤子函數 347
19.2.1 FreeRTOS中的鉤子函數 347
19.2.2 FreeRTOS空閑任務鉤子函數 347
19.3 FreeRTOS空閑任務鉤子函數實驗 348
19.3.1 功能設計 348
19.3.2 軟件設計 348
19.3.3 下載驗證 350
第20章 FreeRTOS內存管理 352
20.1 FreeRTOS內存管理簡介 352
20.2 FreeRTOS內存管理算法 353
20.2.1 heap_1內存管理算法 353
20.2.2 heap_2內存管理算法 356
20.2.3 heap_3內存管理算法 363
20.2.4 heap_4內存管理算法 364
20.2.5 heap_5內存管理算法 374
20.3 FreeRTOS內存管理實驗 378
20.3.1 功能設計 378
20.3.2 軟件設計 378
20.3.3 下載驗證 381