第1章 FreeRTOS簡(jiǎn)介 1
1.1 初識(shí)FreeRTOS 1
1.1.1 什么是FreeRTOS 1
1.1.2 為什么選擇FreeRTOS 2
1.1.3 FreeRTOS的特點(diǎn) 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移植實(shí)驗(yàn) 33
2.2.1 功能設(shè)計(jì) 33
2.2.2 軟件設(shè)計(jì) 34
2.2.3 下載驗(yàn)證 35
第3章 FreeRTOS系統(tǒng)配置 37
3.1 FreeRTOSConfig.h文件 37
3.2 config配置項(xiàng) 37
3.2.1 基礎(chǔ)配置項(xiàng) 矯p扷CRS翪38
3.2.2 內(nèi)存分配相關(guān)定義 40
3.2.3 鉤子函數(shù)相關(guān)定義 41
3.2.4 運(yùn)行時(shí)間和任務(wù)狀態(tài)統(tǒng)計(jì)相關(guān)定義 42
3.2.5 協(xié)程相關(guān)定義 43
3.2.6 軟件定時(shí)器相關(guān)定義 43
3.2.7 中斷嵌套行為配置 43
3.2.8 斷 言 44
3.2.9 FreeRTOS MPU特殊定義 44
3.3 INCLUDE配置項(xiàng) 45
3.4 其他配置項(xiàng) 46
第4章 FreeRTOS中斷管理 47
4.1 ARM Cortex M 中斷 47
4.1.1 簡(jiǎn) 介 47
4.1.2 中斷優(yōu)先級(jí)管理 47
4.1.3 3個(gè)系統(tǒng)中斷優(yōu)先級(jí)配置寄存器 49
4.1.4 3個(gè)中斷屏蔽寄存器 50
4.1.5 中斷控制狀態(tài)寄存器 52
4.2 FreeRTOS中斷配置項(xiàng) 52
4.3 FreeRTOS中斷管理詳解 54
4.3.1 PendSV和SysTick中斷優(yōu)先級(jí) 54
4.3.2 FreeRTOS開(kāi)關(guān)中斷 55
4.3.3 FreeRTOS進(jìn)出臨界區(qū) 56
4.4 FreeRTOS中斷測(cè)試實(shí)驗(yàn) 59
4.4.1 功能設(shè)計(jì) 59
4.4.2 軟件設(shè)計(jì) 59
4.4.3 下載驗(yàn)證 62
第5章 FreeRTOS任務(wù)基礎(chǔ)知識(shí) 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)先級(jí) 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)建與刪除實(shí)驗(yàn)(動(dòng)態(tài)方法) 75
6.2.1 功能設(shè)計(jì) 75
6.2.2 軟件設(shè)計(jì) 75
6.2.3 下載驗(yàn)證 78
6.3 FreeRTOS任務(wù)創(chuàng)建與刪除實(shí)驗(yàn)(靜態(tài)方法) 79
6.3.1 功能設(shè)計(jì) 79
6.3.2 軟件設(shè)計(jì) 79
6.3.3 下載驗(yàn)證 83
6.4 FreeRTOS掛起和恢復(fù)任務(wù)相關(guān) API函數(shù) 84
6.5 FreeRTOS任務(wù)掛起與恢復(fù)實(shí)驗(yàn) 85
6.5.1 功能設(shè)計(jì) 85
6.5.2 軟件設(shè)計(jì) 86
6.5.3 下載驗(yàn)證 89
第7章 FreeRTOS列表和列表項(xiàng) 90
7.1 FreeRTOS列表和列表項(xiàng)簡(jiǎn)介 90
7.1.1 列 表 90
7.1.2 列表項(xiàng) 91
7.1.3 迷你列表項(xiàng) 92
7.2 FreeRTOS列表和列表項(xiàng)相關(guān) API函數(shù) 92
7.3 FreeRTOS操作列表和列表項(xiàng)的宏 98
7.4 FreeRTOS列表項(xiàng)的插入與刪除實(shí)驗(yàn) 99
7.4.1 功能設(shè)計(jì) 99
7.4.2 軟件設(shè)計(jì) 99
7.4.3 下載驗(yàn)證 102
第8章 FreeRTOS系統(tǒng)啟動(dòng)流程及任務(wù)相關(guān)函數(shù)解析 107
8.1 FreeRTOS開(kāi)啟任務(wù)調(diào)度器 107
8.1.1 函數(shù)vTaskStartScheduler() 107
8.1.2 函數(shù)xPortStartScheduler() 110
8.2 FreeRTOS啟動(dòng)個(gè)任務(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)用開(kāi)發(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確定下一個(gè)要運(yùn)行的任務(wù) 143
9.4 PendSV異常何時(shí)觸發(fā) 145
9.5 FreeRTOS時(shí)間片調(diào)度實(shí)驗(yàn) 146
9.5.1 功能設(shè)計(jì) 146
9.5.2 軟件設(shè)計(jì) 147
9.5.3 下載驗(yàn)證 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)與信息查詢(xún)實(shí)驗(yàn) 166
11.2.1 功能設(shè)計(jì) 166
11.2.2 軟件設(shè)計(jì) 166
11.2.3 下載驗(yàn)證 170
11.3 FreeRTOS任務(wù)運(yùn)行時(shí)間統(tǒng)計(jì)實(shí)驗(yàn) 172
11.3.1 功能設(shè)計(jì) 172
11.3.2 軟件設(shè)計(jì) 172
11.3.3 下載驗(yàn)證 176
第12章 FreeRTOS時(shí)間管理 178
12.1 FreeRTOS系統(tǒng)時(shí)鐘節(jié)拍 178
12.1.1 FreeRTOS系統(tǒng)時(shí)鐘節(jié)拍簡(jiǎn)介 178
12.1.2 FreeRTOS系統(tǒng)時(shí)鐘節(jié)拍來(lái)源 178
12.1.3 FreeRTOS系統(tǒng)時(shí)鐘節(jié)拍處理 180
12.2 FreeRTOS任務(wù)延時(shí)函數(shù) 185
第13章 FreeRTOS隊(duì)列 193
13.1 FreeRTOS隊(duì)列簡(jiǎn)介 193
13.2 FreeRTOS隊(duì)列相關(guān)API函數(shù) 196
13.2.1 隊(duì)列結(jié)構(gòu)體 196
13.2.2 創(chuàng)建隊(duì)列 197
13.2.3 隊(duì)列寫(xiě)入消息 205
13.2.4 隊(duì)列讀取消息 215
13.2.5 隊(duì)列鎖 217
13.3 FreeRTOS隊(duì)列操作實(shí)驗(yàn) 220
13.3.1 功能設(shè)計(jì) 220
13.3.2 軟件設(shè)計(jì) 220
13.3.3 下載驗(yàn)證 223
13.4 FreeRTOS隊(duì)列集 223
13.5 FreeRTOS隊(duì)列集相關(guān)API函數(shù) 224
13.6 FreeRTOS隊(duì)列集操作實(shí)驗(yàn) 228
13.6.1 功能設(shè)計(jì) 228
13.6.2 軟件設(shè)計(jì) 229
13.6.3 下載驗(yàn)證 232
13.7 FreeRTOS隊(duì)列集模擬事件標(biāo)志位實(shí)驗(yàn) 234
13.7.1 功能設(shè)計(jì) 234
13.7.2 軟件設(shè)計(jì) 234
13.7.3 下載驗(yàn)證 237
第14章 FreeRTOS信號(hào)量 239
14.1 FreeRTOS信號(hào)量簡(jiǎn)介 239
14.2 FreeRTOS二值信號(hào)量 240
14.2.1 FreeRTOS二值信號(hào)量簡(jiǎn)介 240
14.2.2 FreeRTOS二值信號(hào)量相關(guān) API函數(shù) 240
14.3 FreeRTOS二值信號(hào)量操作實(shí)驗(yàn) 249
14.3.1 功能設(shè)計(jì) 249
14.3.2 軟件設(shè)計(jì) 249
14.3.3 下載驗(yàn)證 252
14.4 FreeRTOS計(jì)數(shù)型信號(hào)量 253
14.4.1 FreeRTOS計(jì)數(shù)型信號(hào)量簡(jiǎn)介 253
14.4.2 FreeRTOS計(jì)數(shù)型信號(hào)量相關(guān)API函數(shù) 253
14.5 FreeRTOS計(jì)數(shù)型信號(hào)量操作實(shí)驗(yàn) 255
14.5.1 功能設(shè)計(jì) 255
14.5.2 軟件設(shè)計(jì) 255
14.5.3 下載驗(yàn)證 258
14.6 優(yōu)先級(jí)翻轉(zhuǎn) 258
14.7 優(yōu)先級(jí)翻轉(zhuǎn)實(shí)驗(yàn) 260
14.7.1 功能設(shè)計(jì) 260
14.7.2 軟件設(shè)計(jì) 260
14.7.3 下載驗(yàn)證 263
14.8 FreeRTOS互斥信號(hào)量 264
14.8.1 FreeRTOS互斥信號(hào)量簡(jiǎn)介 264
14.8.2 FreeRTOS互斥信號(hào)量相關(guān) API函數(shù) 264
14.9 FreeRTOS互斥信號(hào)量操作實(shí)驗(yàn) 266
14.9.1 功能設(shè)計(jì) 266
14.9.2 軟件設(shè)計(jì) 267
14.9.3 下載驗(yàn)證 269
14.10 FreeRTOS遞歸互斥信號(hào)量 270
14.10.1 FreeRTOS遞歸互斥信號(hào)量簡(jiǎn)介 270
14.10.2 FreeRTOS遞歸互斥信號(hào)量相關(guān)API函數(shù) 271
14.10.3 FreeRTOS遞歸互斥信號(hào)量的使用示例 273
第15章 FreeRTOS軟件定時(shí)器 275
15.1 FreeRTOS軟件定時(shí)器簡(jiǎn)介 275
15.1.1 FreeRTOS軟件定時(shí)器服務(wù)任務(wù)簡(jiǎn)介 276
15.1.2 軟件定時(shí)器命令隊(duì)列 276
15.1.3 軟件定時(shí)器的狀態(tài) 276
15.1.4 單次定時(shí)器和周期定時(shí)器 277
15.1.5 軟件定時(shí)器的狀態(tài)轉(zhuǎn)換圖 278
15.1.6 復(fù)位軟件定時(shí)器 278
15.2 FreeRTOS軟件定時(shí)器相關(guān)配置 279
15.3 FreeRTOS軟件定時(shí)器相關(guān)API函數(shù) 279
15.4 FreeRTOS軟件定時(shí)器實(shí)驗(yàn) 286
15.4.1 功能設(shè)計(jì) 286
15.4.2 軟件設(shè)計(jì) 286
15.4.3 下載驗(yàn)證 289
第16章 FreeRTOS事件標(biāo)志組 291
16.1 FreeRTOS事件標(biāo)志組簡(jiǎn)介 291
16.2 FreeRTOS事件標(biāo)志組相關(guān)API函數(shù) 292
16.3 FreeRTOS事件標(biāo)志組實(shí)驗(yàn) 298
16.3.1 功能設(shè)計(jì) 298
16.3.2 軟件設(shè)計(jì) 298
16.3.3 下載驗(yàn)證 301
第17章 FreeRTOS任務(wù)通知 303
17.1 FreeRTOS任務(wù)通知簡(jiǎn)介 303
17.1.1 任務(wù)通知的優(yōu)勢(shì) 304
17.1.2 任務(wù)通知的缺點(diǎn) 304
17.2 FreeRTOS任務(wù)通知相關(guān)API函數(shù) 305
17.3 FreeRTOS任務(wù)通知模擬二值信號(hào)量實(shí)驗(yàn) 321
17.3.1 功能設(shè)計(jì) 321
17.3.2 軟件設(shè)計(jì) 321
17.3.3 下載驗(yàn)證 324
17.4 FreeRTOS任務(wù)通知模擬計(jì)數(shù)型信號(hào)量實(shí)驗(yàn) 324
17.4.1 功能設(shè)計(jì) 324
17.4.2 軟件設(shè)計(jì) 324
17.4.3 下載驗(yàn)證 327
17.5 FreeRTOS任務(wù)通知模擬消息郵箱實(shí)驗(yàn) 328
17.5.1 功能設(shè)計(jì) 328
17.5.2 軟件設(shè)計(jì) 328
17.5.3 下載驗(yàn)證 331
17.6 FreeRTOS任務(wù)通知模擬事件標(biāo)志組實(shí)驗(yàn) 332
17.6.1 功能設(shè)計(jì) 332
17.6.2 軟件設(shè)計(jì) 332
17.6.3 下載驗(yàn)證 335
第18章 FreeRTOS低功耗Tickless模式 337
18.1 FreeRTOS低功耗Tickless模式簡(jiǎn)介 337
18.1.1 空閑任務(wù)中的低功耗Tickless處理 337
18.1.2 函數(shù)portSUPPRESS_TICKS_AND_SLEEP() 339
18.2 FreeRTOS低功耗Tickless模式相關(guān)配置項(xiàng) 340
18.3 FreeRTOS低功耗Tickless實(shí)驗(yàn) 340
18.3.1 功能設(shè)計(jì) 340
18.3.2 軟件設(shè)計(jì) 341
18.3.3 下載驗(yàn)證 344
第19章 FreeRTOS空閑任務(wù) 345
19.1 FreeRTOS空閑任務(wù)詳解 345
19.1.1 FreeRTOS空閑任務(wù)簡(jiǎn)介 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ù)實(shí)驗(yàn) 348
19.3.1 功能設(shè)計(jì) 348
19.3.2 軟件設(shè)計(jì) 348
19.3.3 下載驗(yàn)證 350
第20章 FreeRTOS內(nèi)存管理 352
20.1 FreeRTOS內(nèi)存管理簡(jiǎn)介 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)存管理實(shí)驗(yàn) 378
20.3.1 功能設(shè)計(jì) 378
20.3.2 軟件設(shè)計(jì) 378
20.3.3 下載驗(yàn)證 381