第 1章 初識LiteOS 1
1.1 LiteOS概述 1
1.2 學習LiteOS 2
第 2章 移植LiteOS到STM32 4
2.1 移植前的準備工作 4
2.1.1 獲取STM32的裸機工程模板 4
2.1.2 下載LiteOS源碼 4
2.1.3 LiteOS源碼核心文件夾分析 5
2.2 向裸機工程中添加LiteOS源碼 6
2.2.1 復制LiteOS文件夾到裸機工程根目錄中 6
2.2.2 將OS_CONFIG文件夾中配置文件復制到LiteOS文件夾中 7
2.2.3 復制Include文件夾到CMSIS文件夾中 7
2.2.4 LiteOS文件夾內容介紹 7
2.2.5 添加LiteOS核心源碼到工程組文件夾中 9
2.3 接管中斷版本修改target_config.h 11
2.3.1 target_config.h文件內容講解 11
2.3.2 target_config.h文件修改 22
2.4 非接管中斷版本修改target_config.h 29
2.4.1 target_config.h文件內容 29
2.4.2 target_config.h文件修改 32
2.5 修改相關文件 34
2.5.1 啟動文件內容修改 34
2.5.2 分散加載文件修改 36
2.5.3 修改中斷相關文件 38
2.5.4 修改core_cm3.h文件 39
2.6 修改工程配置 39
2.7 修改main.c 40
2.8 下載驗證 41
第3章 創(chuàng)建任務 42
3.1 硬件初始化 42
3.2 創(chuàng)建單任務 43
3.2.1 動態(tài)內存空間的堆 43
3.2.2 LiteOS核心初始化 44
3.2.3 定義任務函數 45
3.2.4 定義任務ID變量 46
3.2.5 任務控制塊 46
3.2.6 創(chuàng)建具體任務 47
3.3 main.c文件內容全貌 48
3.4 創(chuàng)建多任務 51
3.5 LiteOS的啟動流程 56
3.5.1 第 一種啟動方式 56
3.5.2 第二種啟動方式 57
3.5.3 LiteOS的啟動流程 59
第4章 任務管理 66
4.1 基本概念 66
4.1.1 任務的基本概念 66
4.1.2 調度器的基本概念 67
4.1.3 任務狀態(tài)的基本概念 67
4.1.4 任務狀態(tài)遷移 67
4.2 常用的任務函數 68
4.2.1 任務創(chuàng)建函數LOS_TaskCreate 68
4.2.2 任務刪除函數LOS_TaskDelete 70
4.2.3 任務延時函數LOS_TaskDelay 72
4.2.4 任務掛起函數LOS_TaskSuspend 73
4.2.5 任務恢復函數LOS_TaskResume 74
4.3 常用Task錯誤代碼說明 75
4.4 常用任務函數的使用方法 76
4.4.1 任務創(chuàng)建函數LOS_TaskCreate 76
4.4.2 任務刪除函數LOS_TaskDelete 77
4.4.3 任務延時函數LOS_TaskDelay 78
4.4.4 任務掛起與恢復函數 78
4.5 任務的設計要點 79
4.6 任務管理實驗 80
4.7 實驗現象 85
第5章 消息隊列 86
5.1 消息隊列的基本概念 86
5.2 消息隊列的運行機制 87
5.3 消息隊列的傳輸機制 88
5.4 消息隊列的阻塞機制 88
5.4.1 出隊阻塞 89
5.4.2 入隊阻塞 89
5.5 常見隊列錯誤代碼說明 89
5.6 常用消息隊列的函數 91
5.6.1 消息隊列創(chuàng)建函數LOS_QueueCreate 91
5.6.2 消息隊列刪除函數LOS_QueueDelete 94
5.6.3 消息隊列寫消息函數 96
5.6.4 通用的消息隊列處理函數 100
5.6.5 消息隊列讀消息函數 103
5.7 消息隊列實驗 107
5.8 實驗現象 112
第6章 信號量 114
6.1 信號量的基本概念 114
6.1.1 二值信號量 115
6.1.2 計數信號量 115
6.2 二值信號量的運行機制 116
6.3 二值信號量的應用場景 116
6.4 計數信號量的運行機制 117
6.5 信號量的使用 117
6.5.1 信號量控制塊 117
6.5.2 常見信號量錯誤代碼 118
6.5.3 二值信號量創(chuàng)建函數LOS_BinarySemCreate 118
6.5.4 計數信號量創(chuàng)建函數LOS_SemCreate 120
6.5.5 信號量刪除函數LOS_SemDelete 121
6.5.6 信號量釋放函數LOS_SemPost 122
6.5.7 信號量獲取函數LOS_SemPend 124
6.6 二值信號量同步實驗 126
6.7 二值信號量同步實驗現象 131
6.8 計數信號量實驗 132
6.9 計數信號量實驗現象 137
第7章 互斥鎖 139
7.1 互斥鎖的基本概念 139
7.2 互斥鎖的優(yōu)先級繼承機制 140
7.3 互斥鎖的運行機制 142
7.4 互斥鎖的應用場景 142
7.5 互斥鎖的使用 143
7.5.1 互斥鎖控制塊 143
7.5.2 互斥鎖錯誤代碼 143
7.5.3 互斥鎖創(chuàng)建函數LOS_MuxCreate 144
7.5.4 互斥鎖刪除函數LOS_MuxDelete 145
7.5.5 互斥鎖釋放函數LOS_MuxPost 147
7.5.6 互斥鎖獲取函數LOS_MuxPend 149
7.5.7 使用互斥鎖的注意事項 151
7.6 互斥鎖實驗 151
7.6.1 模擬優(yōu)先級翻轉實驗 152
7.6.2 互斥鎖實驗 158
7.7 實驗現象 164
7.7.1 模擬優(yōu)先級翻轉實驗現象 164
7.7.2 互斥鎖實驗現象 165
第8章 事件 166
8.1 事件的基本概念 166
8.2 事件的運行機制 167
8.3 事件的應用場景 168
8.4 事件的使用 169
8.4.1 事件控制塊 169
8.4.2 常見事件錯誤代碼 169
8.4.3 事件初始化函數LOS_EventInit 169
8.4.4 事件銷毀函數LOS_EventDestory 170
8.4.5 寫指定事件函數LOS_EventWrite 170
8.4.6 讀指定事件函數LOS_EventRead 172
8.4.7 清除指定事件函數LOS_EventClear 175
8.5 事件標志組實驗 176
8.6 實驗現象 182
第9章 軟件定時器 183
9.1 軟件定時器簡介 183
9.1.1 軟件定時器的基本概念 183
9.1.2 軟件定時器的運行機制 184
9.1.3 軟件定時器的精度 185
9.1.4 軟件定時器的應用場景 185
9.2 軟件定時器的函數 185
9.2.1 軟件定時器控制塊 186
9.2.2 軟件定時器錯誤代碼 186
9.2.3 軟件定時器開發(fā)典型流程 187
9.2.4 軟件定時器創(chuàng)建函數LOS_SwtmrCreate 187
9.2.5 軟件定時器刪除函數LOS_SwtmrDelete 190
9.2.6 軟件定時器啟動函數LOS_SwtmrStart 192
9.2.7 軟件定時器停止函數LOS_SwtmrStop 196
9.3 軟件定時器實驗 198
9.4 實驗現象 202
第 10章 內存管理 204
10.1 內存管理的基本概念 204
10.2 內存管理的運行機制 205
10.3 內存管理的應用場景 207
10.4 靜態(tài)內存池的使用 208
10.4.1 靜態(tài)內存池控制塊 208
10.4.2 靜態(tài)內存池初始化函數LOS_MemboxInit 208
10.4.3 靜態(tài)內存池分配函數LOS_MemboxAlloc 210
10.4.4 靜態(tài)內存池釋放函數LOS_MemboxFree 212
10.4.5 靜態(tài)內存池內容清除函數LOS_MemboxClr 213
10.5 動態(tài)內存的使用 213
10.5.1 動態(tài)內存初始化函數LOS_MemInit 214
10.5.2 動態(tài)內存分配函數LOS_MemAlloc 217
10.5.3 動態(tài)內存釋放函數LOS_MemFree 220
10.6 內存管理實驗 223
10.6.1 靜態(tài)內存池管理實驗 223
10.6.2 動態(tài)內存管理實驗 229
10.7 實驗現象 235
10.7.1 靜態(tài)內存池管理實驗現象 235
10.7.2 動態(tài)內存管理實驗現象 236
第 11章 中斷管理 237
11.1 中斷簡介 237
11.1.1 異?!?37
11.1.2 中斷 238
11.2 中斷的運行機制 239
11.3 中斷的應用場景 240
11.4 中斷延遲的基本概念 240
11.5 中斷的使用 241
11.5.1 接管中斷版本的移植 241
11.5.2 接管中斷版本的常用函數 241
11.5.3 非接管中斷 245
11.6 中斷管理實驗 246
11.6.1 接管中斷方式 246
11.6.2 非接管中斷方式 251
11.7 實驗現象 256
第 12章 鏈表 257
12.1 C語言中的鏈表 257
12.2 鏈表的使用 258
12.2.1 鏈表初始化函數LOS_ListInit 258
12.2.2 向鏈表中添加節(jié)點函數LOS_ListAdd 259
12.2.3 從鏈表中刪除節(jié)點函數LOS_ListDelete 260
12.3 雙向鏈表實驗 261
12.4 實驗現象 264