定 價:¥99.00
作 者: | 劉火良,楊森 |
出版社: | 機(jī)械工業(yè)出版社 |
叢編項: | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787111613664 | 出版時間: | 2019-01-01 | 包裝: | 平裝 |
開本: | 16開 | 頁數(shù): | 字?jǐn)?shù): |
推薦序
前言
引言
第一部分 從0到1教你寫RTThread內(nèi)核
第1章 新建RTThread工程——軟件仿真 2
1.1 新建本地工程文件夾 2
1.2 使用KEIL新建工程 3
1.2.1 New Project 3
1.2.2 Select Device for Target 3
1.2.3 Manage RunTime Environment 4
1.3 在KEIL工程中新建文件組 5
1.4 在KEIL工程中添加文件 6
1.5 調(diào)試配置 7
1.5.1 設(shè)置軟件仿真 7
1.5.2 修改時鐘大小 8
1.5.3 添加頭文件路徑 9
第2章 裸機(jī)系統(tǒng)與多線程系統(tǒng) 10
2.1 裸機(jī)系統(tǒng) 10
2.1.1 輪詢系統(tǒng) 10
2.1.2 前后臺系統(tǒng) 11
2.2 多線程系統(tǒng) 12
第3章 線程的定義與線程切換的實現(xiàn) 15
3.1 什么是線程 16
3.2 創(chuàng)建線程 17
3.2.1 定義線程棧 17
3.2.2 定義線程函數(shù) 19
3.2.3 定義線程控制塊 20
3.2.4 實現(xiàn)線程創(chuàng)建函數(shù) 20
3.3 實現(xiàn)就緒列表 30
3.3.1 定義就緒列表 30
3.3.2 將線程插入就緒列表 30
3.4 實現(xiàn)調(diào)度器 31
3.4.1 調(diào)度器初始化 32
3.4.2 啟動調(diào)度器 33
3.4.3 第一次線程切換 34
3.4.4 系統(tǒng)調(diào)度 41
3.5 main()函數(shù) 44
3.6 實驗現(xiàn)象 47
第4章 臨界段的保護(hù) 50
4.1 什么是臨界段 50
4.2 CortexM內(nèi)核快速關(guān)中斷指令 50
4.3 關(guān)中斷 51
4.4 開中斷 51
4.5 臨界段代碼的應(yīng)用 52
4.6 實驗現(xiàn)象 56
第5章 對象容器 57
5.1 什么是對象 57
5.1.1 對象枚舉的定義 57
5.1.2 對象數(shù)據(jù)類型的定義 57
5.1.3 在線程控制塊中添加對象成員 58
5.2 什么是容器 59
5.3 容器的接口實現(xiàn) 63
5.3.1 獲取指定類型的對象信息 64
5.3.2 對象初始化 64
5.3.3 調(diào)用對象初始化函數(shù) 67
5.4 實驗現(xiàn)象 67
第6章 空閑線程與阻塞延時 68
6.1 實現(xiàn)空閑線程 68
6.1.1 定義空閑線程的棧 68
6.1.2 定義空閑線程的線程控制塊 69
6.1.3 定義空閑線程函數(shù) 69
6.1.4 空閑線程初始化 69
6.2 實現(xiàn)阻塞延時 70
6.3 SysTick_Handler()中斷服務(wù)函數(shù) 73
6.4 main()函數(shù) 77
6.5 實驗現(xiàn)象 80
第7章 多優(yōu)先級 82
7.1 就緒列表 82
7.1.1 線程就緒優(yōu)先級組 82
7.1.2 線程優(yōu)先級表 86
7.2 修改代碼以支持多優(yōu)先級 88
7.2.1 修改線程控制塊 88
7.2.2 修改調(diào)度器初始化函數(shù)rt_system_scheduler_init() 90
7.2.3 修改線程初始化函數(shù)rt_thread_init() 91
7.2.4 添加線程啟動函數(shù)rt_thread_startup() 92
7.2.5 修改空閑線程初始化函數(shù)rt_thread_idle_init() 93
7.2.6 修改啟動系統(tǒng)調(diào)度器函數(shù)rt_system_scheduler_start() 94
7.2.7 修改系統(tǒng)調(diào)度函數(shù)rt_schedule() 95
7.2.8 修改阻塞延時函數(shù)rt_thread_delay() 98
7.2.9 修改時基更新函數(shù)rt_tick_increase() 98
7.3 main()函數(shù) 99
7.4 實驗現(xiàn)象 102
第8章 定時器 103
8.1 實現(xiàn)定時器 103
8.1.1 系統(tǒng)定時器列表 103
8.1.2 系統(tǒng)定時器列表初始化 104
8.1.3 定義定時器結(jié)構(gòu)體 104
8.1.4 在線程控制塊中內(nèi)置定時器 105
8.1.5 定時器初始化函數(shù) 106
8.1.6 定時器刪除函數(shù) 108
8.1.7 定時器停止函數(shù) 108
8.1.8 定時器控制函數(shù) 109
8.1.9 定時器啟動函數(shù) 110
8.1.10 定時器掃描函數(shù) 115
8.2 修改代碼以支持定時器 118
8.2.1 修改線程初始化函數(shù) 118
8.2.2 修改線程延時函數(shù) 119
8.2.3 修改系統(tǒng)時基更新函數(shù) 121
8.2.4 修改main.c文件 122
8.3 實驗現(xiàn)象 126
第9章 時間片 127
9.1 實現(xiàn)時間片 127
9.1.1 在線程控制塊中添加時間片相關(guān)成員 127
9.1.2 修改線程初始化函數(shù) 128
9.1.3 修改空閑線程初始化函數(shù) 129
9.1.4 修改系統(tǒng)時基更新函數(shù) 129
9.2 修改main.c文件 131
9.3 實驗現(xiàn)象 135
第二部分 RTThread 內(nèi)核應(yīng)用開發(fā)
第10章 移植RTThread到STM32 138
10.1 獲取STM32的裸機(jī)工程模板 138
10.2 下載RTThread Nano源碼 138
10.3 安裝RTThread Package 139
10.4 向裸機(jī)工程中添加RTThread源碼 140
10.4.1 復(fù)制RTThread Package到裸機(jī)工程根目錄 140
10.4.2 復(fù)制rtconfig.h文件到User文件夾 141
10.4.3 復(fù)制board.c文件到User文件夾 141
10.4.4 rtthread文件夾內(nèi)容簡介 141
10.4.5 添加RTThread源碼到工程組文件夾 143
10.5 rtconfig.h文件 145
10.5.1 rtconfig.h文件內(nèi)容講解 145
10.5.2 rtconfig.h文件修改 152
10.6 board.c文件 156
10.6.1 board.c文件內(nèi)容講解 156
10.6.2 board.c文件修改 160
10.7 添加core_delay.c和core_delay.h文件 167
10.8 修改main.c 171
10.9 下載驗證 172
第11章 線程 173
11.1 硬件初始化 173
11.2 創(chuàng)建單線程——SRAM靜態(tài)內(nèi)存 175
11.2.1 定義線程函數(shù) 175
11.2.2 定義線程棧 176
11.2.3 定義線程控制塊 176
11.2.4 初始化線程 176
11.2.5 啟動線程 177
11.2.6 main.c文件內(nèi)容 177
11.3 下載驗證SRAM靜態(tài)內(nèi)存單線程 179
11.4 創(chuàng)建單線程——SRAM動態(tài)內(nèi)存 179
11.4.1 動態(tài)內(nèi)存空間堆的來源