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