FreeRTOS原理與應用——基於GD32

董磊,李可

  • 出版商: 電子工業
  • 出版日期: 2024-09-01
  • 售價: $348
  • 貴賓價: 9.5$331
  • 語言: 簡體中文
  • 頁數: 256
  • ISBN: 7121489597
  • ISBN-13: 9787121489594
  • 相關分類: Data-visualization
  • 立即出貨 (庫存 < 3)

相關主題

商品描述

本書採用GD32F303ZET6芯片的GD32F3蘋果派開發板,重點介紹FreeRTOS操作系統的原理與應用開發。全書共19章,前兩章簡要介紹了嵌入式操作系統和GD32F3蘋果派開發板;第3~19章分別介紹基準工程的創建、簡易操作系統的實現,以及FreeRTOS的移植、任務管理、時間管理、消息隊列、二值信號量與計數信號量、互斥信號量、事件標志組、任務通知、軟件定時器、內存管理、中斷管理、CPU利用率、流緩沖區、消息緩沖區和協程。全書程序代碼的編寫均遵循統一規範,且各章的工程均採用模塊化設計,以便於將各模塊應用在實際項目和產品中。本書配有豐富的資料包,涵蓋GD32F3蘋果派開發板原理圖、例程、軟件包、PPT等。資料包將持續更新,下載鏈接可通過微信公眾號“卓越工程師培養系列”獲取。本書既可以作為高等院校電子信息、自動化等專業微控制器相關課程的教材,也可以作為微控制器系統設計及相關行業工程技術人員的入門培訓用書。

目錄大綱

第1章 嵌入式操作系統簡介 1
1.1 裸機系統與嵌入式操作系統 1
1.1.1 簡單裸機系統 1
1.1.2 基於定時器計時的裸機系統 2
1.1.3 嵌入式操作系統 2
1.2 操作系統的分類 3
1.2.1 分時操作系統 3
1.2.2 實時操作系統 3
1.3 FreeRTOS簡介 4
1.3.1 為什麽選擇FreeRTOS 4
1.3.2 FreeRTOS的特點 4
1.3.3 商業許可 5
1.3.4 如何獲取相關資料 5
本章任務 5
本章習題 5
第2章 GD32F3蘋果派開發板簡介 6
2.1 為什麽選擇GD32 6
2.2 GD32F3系列微控制器簡介 6
2.3 GD32F3蘋果派開發板電路簡介 8
2.4 基於FreeRTOS的應用實例 11
2.5 本書配套資料包 11
2.6 GD32微控制器開發工具安裝與
配置 12
2.6.1 安裝Keil μVision5 12
2.6.2 設置Keil μVision5 14
2.6.3 安裝CH340驅動 16
本章任務 16
本章習題 17
第3章 基準工程 18
3.1 GD32F30x系列微控制器的系統架
構與存儲器映射 18
3.1.1 系統架構 18
3.1.2 存儲器映射 19
3.2 GD32工程模塊名稱及說明 22
3.3 Keil編輯和編譯及程序下載過程 22
3.3.1 Keil編輯和編譯過程 23
3.3.2 程序下載過程 23
3.4 相關參考資料 23
3.5 代碼框架 24
3.6 實例與代碼解析 25
3.6.1 新建存放工程的文件夾 25
3.6.2 復制並編譯原始工程 25
3.6.3 LED文件對介紹 25
3.6.4 KeyOne文件對介紹 27
3.6.5 Delay文件對介紹 30
3.6.6 RCU文件對介紹 31
3.6.7 Timer文件對介紹 33
3.6.8 Main.c文件介紹 37
3.6.9 程序下載 39
3.6.10 運行結果 44
本章任務 44
本章習題 44
第4章 簡易操作系統 45
4.1 裸機系統與操作系統的區別 45
4.2 任務切換基本原理 45
4.3 CPU工作寄存器和棧區 45
4.4 中斷與異常 48
4.4.1 Cortex-M3/M4的中斷與異常 48
4.4.2 中斷/異常返回 50
4.4.3 SCV與PendSV異常 52
4.5 任務的特性 52
4.5.1 任務優先級 52
4.5.2 任務狀態 52
4.5.3 不可剝奪內核和可剝奪內核 52
4.5.4 空閑任務 54
4.6 實例與代碼解析 54
4.6.1 復制並編譯原始工程 54
4.6.2 添加EasyOS文件對 55
4.6.3 完善EasyOS.h文件 55
4.6.4 完善EasyOS.c文件 56
4.6.5 完善Main.c文件 64
4.6.6 編譯及下載驗證 66
本章任務 67
本章習題 67
第5章 FreeRTOS的移植 68
5.1 FreeRTOS源碼的獲取 68
5.2 FreeRTOS源碼文件簡介 68
5.3 FreeRTOS配置宏定義簡介 69
5.4 實例與代碼解析 70
5.4.1 復制並編譯原始工程 70
5.4.2 移植 71
5.4.3 完善Main.c文件 72
5.4.4 下載驗證 75
本章任務 76
本章習題 76
第6章 任務管理 77
6.1 任務簡介 77
6.1.1 任務函數 77
6.1.2 任務狀態 78
6.1.3 任務優先級 78
6.1.4 任務句柄 79
6.1.5 任務棧 79
6.1.6 任務管理相關API函數 79
6.2 任務控制塊(TCB) 83
6.3 列表和列表項 83
6.4 棧幀初始化 85
6.5 SVC異常處理 86
6.6 PendSV異常處理 87
6.7 實例與代碼解析 89
6.7.1 復制並編譯原始工程 89
6.7.2 編寫測試程序 89
6.7.3 編譯及下載驗證 90
本章任務 91
本章習題 91
第7章 時間管理 92
7.1 相對延時 92
7.2 絕對延時 92
7.3 時間管理相關API函數 92
7.4 實例與代碼解析 93
7.4.1 復制並編譯原始工程 93
7.4.2 編寫測試程序 93
7.4.3 編譯及下載驗證 95
本章任務 95
本章習題 95
第8章 消息隊列 96
8.1 隊列與循環隊列 96
8.2 數據存儲 97
8.3 多任務訪問 97
8.4 出隊阻塞 97
8.5 入隊阻塞 97
8.6 消息隊列集 98
8.7 消息隊列相關API函數 98
8.8 消息隊列集相關API函數 103
8.9 實例與代碼解析 107
8.9.1 復制並編譯原始工程 107
8.9.2 編寫測試程序 108
8.9.3 編譯及下載驗證 110
本章任務 111
本章習題 111
第9章 二值信號量與計數信號量 112
9.1 中斷延遲 112
9.2 二值信號量 113
9.3 計數信號量 115
9.4 相關API函數 116
9.5 實例與代碼解析 123
9.5.1 復制並編譯原始工程 123
9.5.2 編寫測試程序 123
9.5.3 編譯及下載驗證 124
本章任務 125
本章習題 125
第10章 互斥信號量 126
10.1 共享資源與互斥訪問 126
10.1.1 共享資源 126
10.1.2 通過臨界段實現資源管理 128
10.1.3 通過調度器實現資源管理 130
10.1.4 通過互斥信號量實現資源
管理 132
10.2 優先級翻轉與繼承 133
10.2.1 優先級翻轉 133
10.2.2 優先級繼承 133
10.3 遞歸互斥信號量 134
10.4 死鎖 134
10.5 互斥信號量與調度器 134
10.6 守護任務 137
10.7 互斥信號量相關API函數 138
10.8 實例與代碼解析 140
10.8.1 復制並編譯原始工程 140
10.8.2 編寫測試程序 140
10.8.3 編譯及下載驗證 142
本章任務 143
本章習題 143
第11章 事件標志組 144
11.1 事件標志組特性 144
11.2 事件標志組原理 144
11.3 事件標志組相關API函數 145
11.4 實例與代碼解析 155
11.4.1 復制並編譯原始工程 155
11.4.2 編寫測試程序 155
11.4.3 編譯及下載驗證 157
本章任務 158
本章習題 158
第12章 任務通知 159
12.1 任務通知原理 159
12.2 任務通知相關API函數 160
12.3 任務通知的應用 166
12.4 實例與代碼解析 170
12.4.1 復制並編譯原始工程 170
12.4.2 編寫測試程序 170
12.4.3 編譯及下載驗證 171
本章任務 171
本章習題 171
第13章 軟件定時器 172
13.1 軟件定時器簡介 172
13.1.1 軟件定時器的回調函數 172
13.1.2 軟件定時器的模式 172
13.1.3 軟件定時器的狀態 173
13.2 軟件定時器服務 174
13.2.1 軟件定時器的命令隊列 174
13.2.2 軟件定時器服務調度 174
13.3 軟件定時器ID 176
13.4 復位軟件定時器 176
13.5 軟件定時器相關API函數 176
13.6 實例與代碼解析 186
13.6.1 復制並編譯原始工程 186
13.6.2 編寫測試程序 186
13.6.3 編譯及下載驗證 188
本章任務 188
本章習題 188
第14章 內存管理 189
14.1 內存管理簡介 189
14.2 內存管理的應用場景 190
14.3 內存碎片 190
14.4 FreeRTOS內存管理機制 191
14.5 內存管理相關API函數 192
14.6 實例與代碼解析 193
14.6.1 復制並編譯原始工程 193
14.6.2 編寫測試程序 194
14.6.3 編譯及下載驗證 194
本章任務 195
本章習題 195
第15章 中斷管理 196
15.1 中斷簡介 196
15.2 中斷優先級 197
15.3 用於屏蔽中斷的特殊寄存器 197
15.4 FreeRTOS中斷宏 199
15.5 中斷開關 200
15.6 臨界段代碼 201
15.7 實例與代碼解析 202
15.7.1 復制並編譯原始工程 202
15.7.2 完善Timer.c文件 202
15.7.3 編寫測試程序 204
15.7.4 編譯及下載驗證 205
本章任務 206
本章習題 206
第16章 CPU利用率 207
16.1 CPU利用率簡介 207
16.2 CPU利用率統計 207
16.3 CPU利用率相關API函數 207
16.4 實例與代碼解析 208
16.4.1 復制並編譯原始工程 208
16.4.2 完善FreeRTOSConfig.h文件 208
16.4.3 完善Timer文件對 209
16.4.4 編寫測試程序 210
16.4.5 編譯及下載驗證 211
本章任務 211
本章習題 212
第17章 流緩沖區 213
17.1 流緩沖區簡介 213
17.2 流緩沖區相關API函數 213
17.3 實例與代碼解析 219
17.3.1 復制並編譯原始工程 219
17.3.2 完善UART0.c文件 219
17.3.3 編寫測試程序 220
17.3.4 編譯及下載驗證 221
本章任務 221
本章習題 221
第18章 消息緩沖區 222
18.1 消息緩沖區簡介 222

18.2 消息緩沖區相關API函數 222
18.3 實例與代碼解析 227
18.3.1 復制並編譯原始工程 227
18.3.2 編寫測試程序 228
18.3.3 編譯及下載驗證 229
本章任務 229
本章習題 229
第19章 協程 230
19.1 協程的基本原理 230
19.2 FreeRTOS協程 231
19.2.1 FreeRTOS中協程的狀態 231
19.2.2 FreeRTOS中協程的優先級 231
19.2.3 FreeRTOS中的協程函數 232
19.2.4 FreeRTOS中協程的調度 233
19.2.5 FreeRTOS協程的使用限制 234
19.3 協程相關API函數 235
19.4 實例與代碼解析 242
19.4.1 復制並編譯原始工程 242
19.4.2 完善FreeRTOSConfig.h文件 242
19.4.3 編寫測試程序 243
19.4.4 編譯及下載驗證 244
本章任務 245
本章習題 245
參考文獻 246