開啟主選單

求真百科

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

參考文獻

  1. 思想指導人生,豆丁網,2013-01-15
  2. 烏申斯基的教育思想,中公教育,2021-09-19