FreeRTOS原理與應(yīng)用——基于GD32
定 價(jià):58 元
- 作者:董磊
- 出版時(shí)間:2024/9/1
- ISBN:9787121489594
- 出 版 社:電子工業(yè)出版社
- 中圖法分類(lèi):TP332.3
- 頁(yè)碼:256
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書(shū)采用GD32F303ZET6芯片的GD32F3蘋(píng)果派開(kāi)發(fā)板,重點(diǎn)介紹FreeRTOS操作系統(tǒng)的原理與應(yīng)用開(kāi)發(fā)。全書(shū)共19章,前兩章簡(jiǎn)要介紹了嵌入式操作系統(tǒng)和GD32F3蘋(píng)果派開(kāi)發(fā)板;第3~19章分別介紹基準(zhǔn)工程的創(chuàng)建、簡(jiǎn)易操作系統(tǒng)的實(shí)現(xiàn),以及FreeRTOS的移植、任務(wù)管理、時(shí)間管理、消息隊(duì)列、二值信號(hào)量與計(jì)數(shù)信號(hào)量、互斥信號(hào)量、事件標(biāo)志組、任務(wù)通知、軟件定時(shí)器、內(nèi)存管理、中斷管理、CPU利用率、流緩沖區(qū)、消息緩沖區(qū)和協(xié)程。全書(shū)程序代碼的編寫(xiě)均遵循統(tǒng)一規(guī)范,且各章的工程均采用模塊化設(shè)計(jì),以便于將各模塊應(yīng)用在實(shí)際項(xiàng)目和產(chǎn)品中。本書(shū)配有豐富的資料包,涵蓋GD32F3蘋(píng)果派開(kāi)發(fā)板原理圖、例程、軟件包、PPT等。資料包將持續(xù)更新,下載鏈接可通過(guò)微信公眾號(hào)“卓越工程師培養(yǎng)系列”獲取。本書(shū)既可以作為高等院校電子信息、自動(dòng)化等專(zhuān)業(yè)微控制器相關(guān)課程的教材,也可以作為微控制器系統(tǒng)設(shè)計(jì)及相關(guān)行業(yè)工程技術(shù)人員的入門(mén)培訓(xùn)用書(shū)。
董磊,深圳大學(xué)高級(jí)實(shí)驗(yàn)師,主要從事卓越工程師培養(yǎng)以及醫(yī)療器械研發(fā)工作。先后主持10余項(xiàng)醫(yī)療器械研發(fā)項(xiàng)目,主持3項(xiàng)教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目、4項(xiàng)實(shí)驗(yàn)室與設(shè)備管理研究基金項(xiàng)目、6項(xiàng)自制實(shí)驗(yàn)儀器設(shè)備基金項(xiàng)目,獲得專(zhuān)利授權(quán)25項(xiàng)、軟件著作權(quán)10余項(xiàng),發(fā)表論文10余篇。
第1章 嵌入式操作系統(tǒng)簡(jiǎn)介 1
1.1 裸機(jī)系統(tǒng)與嵌入式操作系統(tǒng) 1
1.1.1 簡(jiǎn)單裸機(jī)系統(tǒng) 1
1.1.2 基于定時(shí)器計(jì)時(shí)的裸機(jī)系統(tǒng) 2
1.1.3 嵌入式操作系統(tǒng) 2
1.2 操作系統(tǒng)的分類(lèi) 3
1.2.1 分時(shí)操作系統(tǒng) 3
1.2.2 實(shí)時(shí)操作系統(tǒng) 3
1.3 FreeRTOS簡(jiǎn)介 4
1.3.1 為什么選擇FreeRTOS 4
1.3.2 FreeRTOS的特點(diǎn) 4
1.3.3 商業(yè)許可 5
1.3.4 如何獲取相關(guān)資料 5
本章任務(wù) 5
本章習(xí)題 5
第2章 GD32F3蘋(píng)果派開(kāi)發(fā)板簡(jiǎn)介 6
2.1 為什么選擇GD32 6
2.2 GD32F3系列微控制器簡(jiǎn)介 6
2.3 GD32F3蘋(píng)果派開(kāi)發(fā)板電路簡(jiǎn)介 8
2.4 基于FreeRTOS的應(yīng)用實(shí)例 11
2.5 本書(shū)配套資料包 11
2.6 GD32微控制器開(kāi)發(fā)工具安裝與
配置 12
2.6.1 安裝Keil μVision5 12
2.6.2 設(shè)置Keil μVision5 14
2.6.3 安裝CH340驅(qū)動(dòng) 16
本章任務(wù) 16
本章習(xí)題 17
第3章 基準(zhǔn)工程 18
3.1 GD32F30x系列微控制器的系統(tǒng)架
構(gòu)與存儲(chǔ)器映射 18
3.1.1 系統(tǒng)架構(gòu) 18
3.1.2 存儲(chǔ)器映射 19
3.2 GD32工程模塊名稱(chēng)及說(shuō)明 22
3.3 Keil編輯和編譯及程序下載過(guò)程 22
3.3.1 Keil編輯和編譯過(guò)程 23
3.3.2 程序下載過(guò)程 23
3.4 相關(guān)參考資料 23
3.5 代碼框架 24
3.6 實(shí)例與代碼解析 25
3.6.1 新建存放工程的文件夾 25
3.6.2 復(fù)制并編譯原始工程 25
3.6.3 LED文件對(duì)介紹 25
3.6.4 KeyOne文件對(duì)介紹 27
3.6.5 Delay文件對(duì)介紹 30
3.6.6 RCU文件對(duì)介紹 31
3.6.7 Timer文件對(duì)介紹 33
3.6.8 Main.c文件介紹 37
3.6.9 程序下載 39
3.6.10 運(yùn)行結(jié)果 44
本章任務(wù) 44
本章習(xí)題 44
第4章 簡(jiǎn)易操作系統(tǒng) 45
4.1 裸機(jī)系統(tǒng)與操作系統(tǒng)的區(qū)別 45
4.2 任務(wù)切換基本原理 45
4.3 CPU工作寄存器和棧區(qū) 45
4.4 中斷與異常 48
4.4.1 Cortex-M3/M4的中斷與異常 48
4.4.2 中斷/異常返回 50
4.4.3 SCV與PendSV異常 52
4.5 任務(wù)的特性 52
4.5.1 任務(wù)優(yōu)先級(jí) 52
4.5.2 任務(wù)狀態(tài) 52
4.5.3 不可剝奪內(nèi)核和可剝奪內(nèi)核 52
4.5.4 空閑任務(wù) 54
4.6 實(shí)例與代碼解析 54
4.6.1 復(fù)制并編譯原始工程 54
4.6.2 添加EasyOS文件對(duì) 55
4.6.3 完善EasyOS.h文件 55
4.6.4 完善EasyOS.c文件 56
4.6.5 完善Main.c文件 64
4.6.6 編譯及下載驗(yàn)證 66
本章任務(wù) 67
本章習(xí)題 67
第5章 FreeRTOS的移植 68
5.1 FreeRTOS源碼的獲取 68
5.2 FreeRTOS源碼文件簡(jiǎn)介 68
5.3 FreeRTOS配置宏定義簡(jiǎn)介 69
5.4 實(shí)例與代碼解析 70
5.4.1 復(fù)制并編譯原始工程 70
5.4.2 移植 71
5.4.3 完善Main.c文件 72
5.4.4 下載驗(yàn)證 75
本章任務(wù) 76
本章習(xí)題 76
第6章 任務(wù)管理 77
6.1 任務(wù)簡(jiǎn)介 77
6.1.1 任務(wù)函數(shù) 77
6.1.2 任務(wù)狀態(tài) 78
6.1.3 任務(wù)優(yōu)先級(jí) 78
6.1.4 任務(wù)句柄 79
6.1.5 任務(wù)棧 79
6.1.6 任務(wù)管理相關(guān)API函數(shù) 79
6.2 任務(wù)控制塊(TCB) 83
6.3 列表和列表項(xiàng) 83
6.4 棧幀初始化 85
6.5 SVC異常處理 86
6.6 PendSV異常處理 87
6.7 實(shí)例與代碼解析 89
6.7.1 復(fù)制并編譯原始工程 89
6.7.2 編寫(xiě)測(cè)試程序 89
6.7.3 編譯及下載驗(yàn)證 90
本章任務(wù) 91
本章習(xí)題 91
第7章 時(shí)間管理 92
7.1 相對(duì)延時(shí) 92
7.2 絕對(duì)延時(shí) 92
7.3 時(shí)間管理相關(guān)API函數(shù) 92
7.4 實(shí)例與代碼解析 93
7.4.1 復(fù)制并編譯原始工程 93
7.4.2 編寫(xiě)測(cè)試程序 93
7.4.3 編譯及下載驗(yàn)證 95
本章任務(wù) 95
本章習(xí)題 95
第8章 消息隊(duì)列 96
8.1 隊(duì)列與循環(huán)隊(duì)列 96
8.2 數(shù)據(jù)存儲(chǔ) 97
8.3 多任務(wù)訪問(wèn) 97
8.4 出隊(duì)阻塞 97
8.5 入隊(duì)阻塞 97
8.6 消息隊(duì)列集 98
8.7 消息隊(duì)列相關(guān)API函數(shù) 98
8.8 消息隊(duì)列集相關(guān)API函數(shù) 103
8.9 實(shí)例與代碼解析 107
8.9.1 復(fù)制并編譯原始工程 107
8.9.2 編寫(xiě)測(cè)試程序 108
8.9.3 編譯及下載驗(yàn)證 110
本章任務(wù) 111
本章習(xí)題 111
第9章 二值信號(hào)量與計(jì)數(shù)信號(hào)量 112
9.1 中斷延遲 112
9.2 二值信號(hào)量 113
9.3 計(jì)數(shù)信號(hào)量 115
9.4 相關(guān)API函數(shù) 116
9.5 實(shí)例與代碼解析 123
9.5.1 復(fù)制并編譯原始工程 123
9.5.2 編寫(xiě)測(cè)試程序 123
9.5.3 編譯及下載驗(yàn)證 124
本章任務(wù) 125
本章習(xí)題 125
第10章 互斥信號(hào)量 126
10.1 共享資源與互斥訪問(wèn) 126
10.1.1 共享資源 126
10.1.2 通過(guò)臨界段實(shí)現(xiàn)資源管理 128
10.1.3 通過(guò)調(diào)度器實(shí)現(xiàn)資源管理 130
10.1.4 通過(guò)互斥信號(hào)量實(shí)現(xiàn)資源
管理 132
10.2 優(yōu)先級(jí)翻轉(zhuǎn)與繼承 133
10.2.1 優(yōu)先級(jí)翻轉(zhuǎn) 133
10.2.2 優(yōu)先級(jí)繼承 133
10.3 遞歸互斥信號(hào)量 134
10.4 死鎖 134
10.5 互斥信號(hào)量與調(diào)度器 134
10.6 守護(hù)任務(wù) 137
10.7 互斥信號(hào)量相關(guān)API函數(shù) 138
10.8 實(shí)例與代碼解析 140
10.8.1 復(fù)制并編譯原始工程 140
10.8.2 編寫(xiě)測(cè)試程序 140
10.8.3 編譯及下載驗(yàn)證 142
本章任務(wù) 143
本章習(xí)題 143
第11章 事件標(biāo)志組 144
11.1 事件標(biāo)志組特性 144
11.2 事件標(biāo)志組原理 144
11.3 事件標(biāo)志組相關(guān)API函數(shù) 145
11.4 實(shí)例與代碼解析 155
11.4.1 復(fù)制并編譯原始工程 155
11.4.2 編寫(xiě)測(cè)試程序 155
11.4.3 編譯及下載驗(yàn)證 157
本章任務(wù) 158
本章習(xí)題 158
第12章 任務(wù)通知 159
12.1 任務(wù)通知原理 159
12.2 任務(wù)通知相關(guān)API函數(shù) 160
12.3 任務(wù)通知的應(yīng)用 166
12.4 實(shí)例與代碼解析 170
12.4.1 復(fù)制并編譯原始工程 170
12.4.2 編寫(xiě)測(cè)試程序 170
12.4.3 編譯及下載驗(yàn)證 171
本章任務(wù) 171
本章習(xí)題 171
第13章 軟件定時(shí)器 172
13.1 軟件定時(shí)器簡(jiǎn)介 172
13.1.1 軟件定時(shí)器的回調(diào)函數(shù) 172
13.1.2 軟件定時(shí)器的模式 172
13.1.3 軟件定時(shí)器的狀態(tài) 173
13.2 軟件定時(shí)器服務(wù) 174
13.2.1 軟件定時(shí)器的命令隊(duì)列 174
13.2.2 軟件定時(shí)器服務(wù)調(diào)度 174
13.3 軟件定時(shí)器ID 176
13.4 復(fù)位軟件定時(shí)器 176
13.5 軟件定時(shí)器相關(guān)API函數(shù) 176
13.6 實(shí)例與代碼解析 186
13.6.1 復(fù)制并編譯原始工程 186
13.6.2 編寫(xiě)測(cè)試程序 186
13.6.3 編譯及下載驗(yàn)證 188
本章任務(wù) 188
本章習(xí)題 188
第14章 內(nèi)存管理 189
14.1 內(nèi)存管理簡(jiǎn)介 189
14.2 內(nèi)存管理的應(yīng)用場(chǎng)景 190
14.3 內(nèi)存碎片 190
14.4 FreeRTOS內(nèi)存管理機(jī)制 191
14.5 內(nèi)存管理相關(guān)API函數(shù) 192
14.6 實(shí)例與代碼解析 193
14.6.1 復(fù)制并編譯原始工程 193
14.6.2 編寫(xiě)測(cè)試程序 194
14.6.3 編譯及下載驗(yàn)證 194
本章任務(wù) 195
本章習(xí)題 195
第15章 中斷管理 196
15.1 中斷簡(jiǎn)介 196
15.2 中斷優(yōu)先級(jí) 197
15.3 用于屏蔽中斷的特殊寄存器 197
15.4 FreeRTOS中斷宏 199
15.5 中斷開(kāi)關(guān) 200
15.6 臨界段代碼 201
15.7 實(shí)例與代碼解析 202
15.7.1 復(fù)制并編譯原始工程 202
15.7.2 完善Timer.c文件 202
15.7.3 編寫(xiě)測(cè)試程序 204
15.7.4 編譯及下載驗(yàn)證 205
本章任務(wù) 206
本章習(xí)題 206
第16章 CPU利用率 207
16.1 CPU利用率簡(jiǎn)介 207
16.2 CPU利用率統(tǒng)計(jì) 207
16.3 CPU利用率相關(guān)API函數(shù) 207
16.4 實(shí)例與代碼解析 208
16.4.1 復(fù)制并編譯原始工程 208
16.4.2 完善FreeRTOSConfig.h文件 208
16.4.3 完善Timer文件對(duì) 209
16.4.4 編寫(xiě)測(cè)試程序 210
16.4.5 編譯及下載驗(yàn)證 211
本章任務(wù) 211
本章習(xí)題 212
第17章 流緩沖區(qū) 213
17.1 流緩沖區(qū)簡(jiǎn)介 213
17.2 流緩沖區(qū)相關(guān)API函數(shù) 213
17.3 實(shí)例與代碼解析 219
17.3.1 復(fù)制并編譯原始工程 219
17.3.2 完善UART0.c文件 219
17.3.3 編寫(xiě)測(cè)試程序 220
17.3.4 編譯及下載驗(yàn)證 221
本章任務(wù) 221
本章習(xí)題 221
第18章 消息緩沖區(qū) 222
18.1 消息緩沖區(qū)簡(jiǎn)介 222
18.2 消息緩沖區(qū)相關(guān)API函數(shù) 222
18.3 實(shí)例與代碼解析 227
18.3.1 復(fù)制并編譯原始工程 227
18.3.2 編寫(xiě)測(cè)試程序 228
18.3.3 編譯及下載驗(yàn)證 229
本章任務(wù) 229
本章習(xí)題 229
第19章 協(xié)程 230
19.1 協(xié)程的基本原理 230
19.2 FreeRTOS協(xié)程 231
19.2.1 FreeRTOS中協(xié)程的狀態(tài) 231
19.2.2 FreeRTOS中協(xié)程的優(yōu)先級(jí) 231
19.2.3 FreeRTOS中的協(xié)程函數(shù) 232
19.2.4 FreeRTOS中協(xié)程的調(diào)度 233
19.2.5 FreeRTOS協(xié)程的使用限制 234
19.3 協(xié)程相關(guān)API函數(shù) 235
19.4 實(shí)例與代碼解析 242
19.4.1 復(fù)制并編譯原始工程 242
19.4.2 完善FreeRTOSConfig.h文件 242
19.4.3 編寫(xiě)測(cè)試程序 243
19.4.4 編譯及下載驗(yàn)證 244
本章任務(wù) 245
本章習(xí)題 245
參考文獻(xiàn) 246