FreeRTOS源碼詳解與應用開發·基於STM32
《FreeRTOS源碼詳解與應用開發·基於STM32》,許穎勁 左忠凱 著,出版社: 北京航空航天大學出版社。
書籍對於人類原有很重大的意義,但,書籍不僅對那些不會讀書的人是毫無用處,就是對那些機械地讀完了書還不會從死的文字中引申活的思想[1]的人也是無用的。 —— 烏申斯基[2]
目錄
內容簡介
本書輔以大量的例程,全面講解了FreeRTOS的原理以及源碼,主要內容包括任務管理和任務調度、系統裁減和配置、時間管理、隊列、信號量、軟件定時器、事件標誌組、任務通知、低功耗Tickless模式、空閒任務以及內存管理等。同時,本書配有大量的圖例,對於想要深入學習RTOS類系統原理的人來說是一個不錯的選擇。本書是再版書,相比舊版,使用了更新的FreeRTOS內核版本作為解析對象,並針對FreeRTOS在多種ARM Cortex- M 架構下的運行進行了介紹;同時,本書對知識點的介紹更加詳細、講解的先後順序更加合理。
本書配套資料包括視頻教程、文檔教程、各個例程的源碼及相關參考資料。
目錄
第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 商業許可 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 運行時間和任務狀態統計相關定義 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 中斷優先級管理 47
4.1.3 3個系統中斷優先級配置寄存器 49
4.1.4 3個中斷寄存器 50
4.1.5 中斷控制狀態寄存器 52
4.2 FreeRTOS中斷配置項 52
4.3 FreeRTOS中斷管理詳解 54
4.3.1 PendSV和SysTick中斷優先級 54
4.3.2 FreeRTOS開關中斷 55
4.3.3 FreeRTOS進出臨界區 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任_____羅_務狀態 65
5.3 FreeRTOS任務優先級 66
5.4 FreeRTOS任務調度方式 67
5.5 FreeRTOS任務控制塊 68
5.6 FreeRTOS任務棧 69
第6章 FreeRTOS任務相關API函數 71
6.1 FreeRTOS創建和刪除任務相關 API函數 71
6.2 FreeRTOS任務創建與刪除實驗(動態方法) 75
6.2.1 功能設計 75
6.2.2 軟件設計 75
6.2.3 下載驗證 78
6.3 FreeRTOS任務創建與刪除實驗(靜態方法) 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任務狀態列表 115
8.4 FreeRTOS創建任務函數解析 116
8.5 FreeRTOS刪除任務函數解析 127
FreeRTOS源碼詳解與應用開發———基於STM32(第2版)
4 ·
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異常何時觸發 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任務狀態與信息查詢實驗 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系統時鐘節拍 178
12.1.1 FreeRTOS系統時鐘節拍簡介 178
12.1.2 FreeRTOS系統時鐘節拍來源 178
12.1.3 FreeRTOS系統時鐘節拍處理 180
12.2 FreeRTOS任務延時函數 185
第13章 FreeRTOS隊列 193
13.1 FreeRTOS隊列簡介 193
13.2 FreeRTOS隊列相關API函數 196
13.2.1 隊列結構體 196
13.2.2 創建隊列 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 優先級翻轉 258
14.7 優先級翻轉實驗 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 軟件定時器的狀態 276
15.1.4 單次定時器和周期定時器 277
15.1.5 軟件定時器的狀態轉換圖 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 任務通知的優勢 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空閒任務的創建 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