-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

跟工程師學嵌入式開發 ——基于STM32和μC/OS-III

( 簡體 字)
作者:譚貴,易確,熊立宇類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32
譯者:
出版社:電子工業出版社跟工程師學嵌入式開發 ——基于STM32和μC/OS-III 3dWoo書號: 47852
詢問書籍請說出此書號!

缺書
NT售價: 440

出版日:10/1/2017
頁數:448
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121327254
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

進入21世紀以來,隨著微電子技術、計算機技術及網絡通信等技術的深入發展,整個社會信息化的程度越來越高,不用說智能手機,各種信息設備,如應用于醫療健康領域的智能心電儀、智能血糖儀,工業生產領域的自動測試裝置、機器人手臂,安防領域的指紋識別、人臉識別技術,智能家居里的智能空調、冰箱、電表,甚至軍事領域中的精確制導武器、紅外熱成像眼鏡、自動跟蹤……都無一例外地具有“智慧”的大腦,它們的應用已深入我們生活的每個角落,改變著我們的生活方式。
在上面所提及的應用中,其“智慧”的大腦,實質就是一套套嵌入式系統,它們由不同的硬件和軟件組成。這里所說的“不同”,一是指構成嵌入式系統的硬件核心,可能是由基于不同廠商的SoC芯片所拓展設計的實用電路,如ST公司的STM8、STM32系列SoC、NXP公司的LPC系列SoC;二是指嵌入式系統的軟件構成,除去SoC片上外設的必要驅動外,還有管理這些驅動和應用的操作系統,如Embedded Linux、μC/OS-III和文件管理系統(如FatFs)等。
目前,嵌入式應用處理器多采用ARM體系結構。ARM公司為了細分市場,將其芯片按應用領域分為Cortex-A、Cortex-R、Cortex-M三個系列。Cortex-A系列芯片帶有MMU(內存管理單元)、MPU(內存保護單元)部件,主要針對復雜的嵌入式應用,如智能手機、平板電腦及高檔成像設備等;Cortex-R系列面向實時應用領域,如精密機器控制、爐溫監控;Cortex-M系列則面向傳統的單片機市場,其子系列M0∼M4涵蓋了從8位到32位單片機的所有應用,與傳統的C51系列單片機相比,功能更強大。因此,學習嵌入式開發技術,應本著“循序漸近,由簡單到復雜”的原則,首先學習基于Cortex-M系列的單片機是最好的入門選擇,在此基礎上,進階學習Cortex-A系列就顯得“自然而游刃有余”。
本書就以基于CM3內核架構(Cortex-M3)的芯片STM32F103ZET6(意法半導體公司ST,基于MCU應用的32位芯片系列,簡稱STM32)為講解線索,合理選擇實際應用中廣泛使用的USART、I2C、SPI、SDIO、以太網等接口,結合ST公司提供的庫函數,通過一個個具有實際使用價值的案例代碼,詳細介紹每種接口的工作原理、驅動配置和綜合應用。在學習本書之前,如果讀者對CM3體系結構有一定的了解,當然最好;如果沒有此類的背景知識,也不用擔心會影響對本書的學習。筆者在講解過程中,會在涉及需要CM3體系結構知識的地方,自然而然地引入相應知識點的介紹。
本書對章節、知識點的安排有以下三個顯著特點,以便讀者快速、高效地掌握基于“STM32+μC/OS-III結構”的嵌入式開發。
在章節的安排上,遵循“先總體,后細節”的原則。第1章以一個跑馬燈實驗作為引子,為讀者介紹了嵌入式開發所涉及的基本概念和流程,如GPIO配置、事件的輪詢和中斷處理機制等,以及基于STM32庫開發所涉及的庫文件組織和CMSIS標準、開發工具。建立了嵌入式開發的基本過程等輪廓性認識之后,第2章自然地切入STM32系列芯片的框架結構,包括總線、外設地址空間映射和時鐘樹。只有清楚了這三者之間的關系,才有可能對后面章節所講解的外設工作過程和相關操作有深刻的理解。在此基礎上,第3章開啟了嵌入式系統的啟動之旅,透徹地分析了基于CM3核的芯片系統之啟動過程。有了前面三章的基礎,隨后的章節則以“先簡單,后復雜”的原則逐一介紹GPIO、外部中斷線、USART、DMA、I2C、SDIO等外設的結構原理及相應的驅動代碼。
其次,對每一種外設的講解,除了遵循“先總體,后細節”的原則之外,采用“以實驗現象為驅動(每章的第一節首先呈現給讀者一個最終的實驗結果畫面)”的思路,一步步進入外設的內部世界。這樣的安排有利于激起讀者對未知世界的強烈興趣,隨著對外設“先總后細”的逐層深入,最終使讀者徹底理解并掌握每種外設“實驗現象”背后的邏輯。
最后,本書除了講解每種外設的工作原理和驅動代碼之外,還穿插了三個有實用價值的綜合案例,以拓展讀者對外設應用的認識和理解,以及必要的知識面。第一個綜合實例是基于USART接口的Shell(俗稱“外殼”,類似于Linux的bash)程序,通過它可以將“對外設的操作”封裝為一個個Shell命令,以隨時執行。因此,Shell程序貫穿本書的始末。第二個綜合實例是Telnet遠程登錄服務程序,該程序底層硬件是基于SPI總線的以太網芯片ENC2860,上層使用uIP協議棧來完成常用的TCP/IP功能,如ping、ICMP、IP、TCP等。“麻雀雖小,五臟俱全”,通過實現這樣的服務程序,不但可以使讀者理解和掌握Telnet協議的工作原理及過程,而且有利于進一步學習理解TCP/IP協議棧代碼實現。最后一個綜合示例實現了使用μC/OS-III操作系統來管理前面所講解的硬件,充分利用操作系統的任務通信、消息傳遞等機制來提升硬件系統的運行效能。μC/OS-III系統結構緊湊,代碼量小,容易理解掌握,通過移植和應用μC/OS-III,使讀者在掌握系統應用場景的同時,加深理解操作系統內部的工作機理,為后續進一步學習基于Linux的嵌入式開發打下基礎。
由于社會信息化日趨明顯,必定導致包括STM32在內的MCU的應用越來越多。希望本書能為渴望進入嵌入式開發領域的人員提供一個好的入門指引,為后續深入嵌入式開發的高級應用奠定基礎。作為學習教材,本書每一章的實驗代碼都由筆者在Keil MDK開發環境中調試通過,讀者可以放心學習使用。同時,由于筆者水平有限,書中難免會存在對相關知識點理解不夠準確之處,敬請讀者批評指正。
參與編寫本書的人員還有我的同事易確,他負責本書所有的實驗電路設計;熊立宇,負責完成最后三章的初稿編寫及全書的校驗工作。十分感謝他們的辛勤付出!
在本書的編寫過程中,得到了電子工業出版社的田宏峰老師的悉心支持,在此表示衷心感謝,同時感謝他為我提供了一個這樣施展自己特長機會;十分感謝我的同事彭麗蘭,是她在我工作忙碌的時候,分擔了我的工作,使我能夠安心寫作;最后想表達對我的家人,特別是朋友熊姬珠的謝意,是她們給予我精神上的鼓勵,才使我得以完成這“馬拉松”式的寫作。

譚 貴
2017年8月于深圳
內容簡介:

本書選用的STM32芯片基于ARM Cortex-M3體系結構,根據基于MCU的嵌入式技術實際應用需求,合理地選擇了多種常用的重要外設接口,如USART、SPI、I2C、FSCM、SDIO總線、以太網等,結合豐富的實例及工程源代碼,由淺入深、系統全面地介紹嵌入式系統的底層工作原理。在此過程中,通過穿插多個綜合示例的講解,如命令行外殼程序Shell、eFat文件系統、Telnet遠程控制、?C/OS-III實時操作系統的移植過程,無論是嵌入式的初學者,還是有一定開發經驗的工程師都能從中獲益,使讀者既能系統全面地掌握嵌入式開發所需的軟硬件知識,又能鍛煉他們的綜合開發能力,為將來從事嵌入式開發方面的工作奠定堅實的基礎。

目錄:

第1章 開發利器:STM32庫和MDK Keil 1
1.1 學習啟航:閃爍的跑馬燈 1
1.1.1 實驗結果呈現 1
1.1.2 實驗分析 2
1.1.3 配置GPIO引腳 5
1.1.4 實驗控制邏輯 6
1.2 STM32庫結構和CMSIS標準 8
1.2.1 STM32庫層次結構 9
1.2.2 CMSIS層次結構 9
1.2.3 STM32庫結構中的文件關系 10
1.2.4 STM32庫函數命名規則 13
1.2.5 STM32庫常見的幾個狀態類型 13
1.3 工程開發環境設置 14
1.3.1 有關MDK 14
1.3.2 使用MDK建立工程的步驟 15
第2章 STM32體系結構 25
2.1 總線與通信接口 25
2.1.1 總線組成 25
2.1.2 重要的總線術語 26
2.2 STM32功能框架 27
2.2.1 系統組成 27
2.2.2 總線單元及掛接設備 28
2.3 STM32存儲器映射 29
2.3.1 獨立編址 30
2.3.2 統一編址(存儲器映像編址) 31
2.3.3 CM3外設地址空間映射 32
2.3.4 地址空間映射詳解 34
2.4 STM32時鐘結構 39
2.4.1 STM32F103ZET6的時鐘樹 39
2.4.2 時鐘樹二級框架 40
2.4.3 時鐘啟用過程 41
2.5 系統時鐘樹與地址空間映射的關系 43
第3章 STM32系統啟動過程分析 44
3.1 CM3的復位序列 44
3.1.1 堆棧 45
3.1.2 向量表 47
3.2 STM32啟動代碼分析 49
3.3 STM32系統時鐘初始化 52
3.3.1 時鐘源的選擇 52
3.3.2 系統時鐘設置 56
3.4 程序運行環境初始化函數__main() 60
3.4.1 回顧編譯和鏈接過程 60
3.4.2 映像文件的組成 61
3.4.3 映像的加載過程 63
3.4.4 由MDK集成環境自動生成的分散加載文件 65
3.4.5 _main()函數的作用 66
第4章 通用GPIO操作 68
4.1 實驗結果預覽:LED跑馬燈 68
4.2 GPIO基本知識 68
4.2.1 GPIO分組管理及其引腳 69
4.2.2 GPIO工作模式及其配置 69
4.2.3 GPIO引腳的寫入和讀出 71
4.3 實驗代碼解析 74
4.3.1 實驗現象原理分析 74
4.3.2 源代碼分析 78
4.4 創建工程 81
4.4.1 建立工程目錄結構 81
4.4.2 導入源代碼文件 81
4.4.3 編譯執行 82
4.5 編譯調試 82
4.5.1 調試方法 82
4.5.2 棧和變量觀察窗口 83
4.5.3 運行程序并調試:一個函數一個斷點 84
4.5.4 運行程序并調試:多個函數多個斷點 86
第5章 外部中斷EXTI操作 90
5.1 實驗結果預覽:LED跑馬燈_中斷控制 90
5.2 異常與中斷 91
5.2.1 Cortex-M3的異常向量 91
5.2.2 異常向量表 92
5.3 NVIC與中斷控制 93
5.3.1 NVIC簡述 93
5.3.2 NVIC與外部中斷 93
5.3.3 NVIC中斷的優先級 94
5.3.4 NVIC初始化 95
5.4 EXTI基本知識 97
5.4.1 EXTI簡介 97
5.4.2 EXTI控制器組成結構 97
5.4.3 GPIO引腳到EXTI_Line的映射 100
5.4.4 EXTI_Line到NVIC的映射 102
5.5 實驗代碼解析 103
5.5.1 工程源碼的邏輯結構 103
5.5.2 實驗代碼軟硬件原理 104
5.5.3 實驗代碼分析 107
5.6 創建工程 109
5.6.1 建立工程目錄結構 109
5.6.2 導入源代碼文件 109
5.6.3 編譯執行 110
5.7 編譯調試 111
5.7.1 打開內存窗口 111
5.7.2 設置斷點 111
5.7.3 運行程序并調試 112
第6章 USART接口 115
6.1 實驗結果預覽 115
6.1.1 實驗準備工作 115
6.1.2 實驗現象描述 116
6.2 USART基本知識 117
6.2.1 串行異步通信協議 117
6.2.2 USART與接口標準RS-232 118
6.3 STM32 USART結構 119
6.3.1 USART工作模式 119
6.3.2 精簡的USART結構 119
6.3.3 USART單字節收發過程 120
6.4 USART寄存器位功能定義 121
6.4.1 狀態寄存器(USART_SR) 121
6.4.2 數據寄存器(USART_DR) 122
6.4.3 控制寄存器1(USART_CR1) 122
6.4.4 控制寄存器2(USART_CR2) 123
6.4.5 控制寄存器3(USART_CR3) 123
6.4.6 分數波特率寄存器USART_BRR 124
6.4.7 USART模塊寄存器組 125
6.4.8 USART模塊初始化函數 126
6.4.9 USART常用函數功能說明 127
6.5 USART實驗代碼分析 128
6.5.1 實驗電路(硬件連接關系) 128
6.5.2 工程源代碼文件層次結構 130
6.5.3 應用層(主程序控制邏輯) 131
6.5.4 用戶驅動層 133
6.5.5 函數printf()重定向 135
6.6 創建工程 135
6.6.1 建立工程目錄結構 135
6.6.2 創建文件組和導入源文件 136
6.6.3 編譯執行 137
第7章 USART綜合應用:命令行外殼程序Shell 138
7.1 實驗結果預覽 138
7.2 基于USART的I/O函數 139
7.2.1 字符及字符串獲取函數:xgetc()和xgets() 139
7.2.2 字符及字符串打印函數:xputc()和xputs() 141
7.3 可變參數輸出函數xprintf() 142
7.3.1 可變參數 142
7.3.2 可變參數宏的使用與作用 143
7.3.3 用可變參數宏實現自己的格式化輸出函數xprintf() 144
7.4 Shell外殼 145
7.4.1 Shell命令管理結構 146
7.4.2 Shell命令解析過程 147
7.4.3 命令函數之參數解析 150
7.5 建立工程,編譯和運行 151
7.5.1 創建和配置工程 151
7.5.2 編譯執行 153
第8章 I2C接口 154
8.1 實驗結果預覽:輪詢寫入/讀出EEPROM數據 154
8.2 I2C總線協議 155
8.2.1 總線特點 155
8.2.2 I2C應用結構 155
8.2.3 總線信號時序分析 156
8.3 STM32 I2C模塊 158
8.3.1 I2C組成框圖 158
8.3.2 I2C主模式工作流程 159
8.3.3 I2C中斷及DMA請求 161
8.4 I2C EEPROM讀寫示例及分析 162
8.4.1 示例電路連接 162
8.4.2 app.c文件中的main()函數 163
8.4.3 eeprom.h文件 166
8.4.4 eeprom.c文件 167
8.4.5 shell.c文件 174
8.5 建立工程,編譯及運行 175
8.5.1 創建和配置工程 175
8.5.2 編譯執行 176
第9章 DMA接口 177
9.1 實驗結果預覽 177
9.2 通用DMA的作用及特征 178
9.3 STM32 DMA基本知識 178
9.3.1 DMA與系統其他模塊關系圖 178
9.3.2 STM32 DMA組成 179
9.4 實驗示例分析 183
9.4.1 main.c文件中的main()函數 184
9.4.2 USART1的初始化 184
9.4.3 DMA通道中斷處理函數 189
9.4.4 sysTick中斷處理函數 190
9.4.5 DMA通道配置的其他寄存器 191
9.4.6 DMA用戶測試命令及其執行函數 192
9.5 建立工程,編譯和執行 193
9.5.1 建立以下工程文件夾 194
9.5.2 創建文件組和導入源文件 194
9.5.3 編譯運行 194
第10章 實時時鐘RTC 195
10.1 實驗結果預覽 195
10.2 STM32 RTC模塊 196
10.2.1 STM32后備供電區域 196
10.2.2 RTC組成 199
10.3 RTC實驗設計與源碼分析 204
10.3.1 硬件連接和GPIO資源 204
10.3.2 實驗源代碼邏輯結構 204
10.3.3 源代碼分析 205
10.4 建立工程,編譯和執行 212
10.4.1 建立以下工程文件夾 212
10.4.2 創建文件組和導入源文件 212
10.4.3 編譯執行 213
第11章 系統定時器SysTick 214
11.1 SysTick簡述 214
11.2 SysTick工作過程 214
11.3 SysTick寄存器位功能定義 215
11.3.1 控制和狀態寄存器:STK_CTRL 215
11.3.2 重載寄存器:STK_LOAD 216
11.3.3 當前計數值寄存器:STK_VAL 217
11.3.4 校正寄存器:STK_CALIB 217
11.3.5 SysTick模塊寄存器組 217
11.3.6 配置SysTick定時器 218
11.4 基于SysTick的延時函數代碼分析 220
11.4.1 實現原理 220
11.4.2 實現代碼分析 220
11.4.3 基于SysTick延時的LED閃爍命令 223
11.5 建立工程,編譯和執行 224
11.5.1 建立以下工程文件夾 224
11.5.2 創建文件組和導入源文件 224
11.5.3 編譯運行 226
第12章 SPI接口 227
12.1 實驗現象預覽:輪詢寫入/讀出SPI Flash數據 227
12.2 SPI總線協議 228
12.2.1 總線信號及其應用結構 228
12.2.2 SPI內部結構與工作原理 229
12.3 STM32 SPI模塊 231
12.3.1 SPI組成框圖 231
12.3.2 STM32 SPI主模式數據收發過程 232
12.3.3 SPI中斷及DMA請求 234
12.4 W25Q128FV規格說明 234
12.4.1 W25Q128FV狀態和控制管理 235
12.4.2 W25Q128FV常用指令 236
12.5 程序入口與SPI初始化代碼 237
12.5.1 實驗硬件資源 237
12.5.2 工程入口文件main.c 238
12.5.3 spiflash.c文件中的spiFlash_Init()函數 239
12.6 SPI Flash測試代碼分析 243
12.6.1 spiflash.c文件中的SPI Flash測試函數spiTest() 244
12.6.2 SPI Flash ID讀取函數sFLASH_readID() 245
12.6.3 扇區擦除函數sFLASH_eraseSector() 246
12.6.4 Flash頁寫函數sFLASH_writePage() 246
12.6.5 Flash讀函數sFLASH_readBuffer() 247
12.6.6 Flash字節發送函數sFLASH_SendByte() 248
12.7 向Shell添加SPI測試指令spitest 249
12.8 建立工程,編譯和執行 250
12.8.1 建立以下工程文件夾 250
12.8.2 創建文件組和導入源文件 250
12.8.3 編譯運行 252
第13章 網絡接口:以太網 253
13.1 網絡體系結構簡介 253
13.1.1 三種網絡模型 253
13.1.2 以太網標準(Ethernet) 256
13.2 ENC28J60知識 257
13.2.1 ENC28J60概述 257
13.2.2 控制寄存器 259
13.2.3 以太網緩沖器 260
13.2.4 PHY寄存器 261
13.2.5 ENC28J60 SPI指令集 261
13.2.6 ENC28J60初始化 263
13.2.7 使用ENC28J60收發數據 268
13.2.8 ENC28J60驅動代碼總結 272
13.3 uIP協議棧簡介 274
13.3.1 uIP特性 274
13.3.2 uIP應用接口 275
13.3.3 uIP的初始化及配置函數 277
13.3.4 uIP的主程序循環 277
13.4 uIP移植分析 279
13.4.1 下載uIP1.0版源碼文件 279
13.4.2 理解兩個中間層文件與應用層和協議層之間的關系 280
13.4.3 添加uIP協議棧后的工程文件組 285
第14章 綜合示例:基于uIP的Telnet服務 286
14.1 實驗現象預覽 286
14.2 Telnet遠程登錄協議 287
14.2.1 Telnet概述 287
14.2.2 Telnet協議主要技術 288
14.2.3 Telnet命令 288
14.3 Telnetd服務框架及實現 290
14.3.1 本實驗Telnetd服務框架 290
14.3.2 Telnetd服務框架的實現 291
14.4 上層應用與uIP協議的接口:telnetd_appcall() 304
14.5 建立工程,編譯和運行 309
14.5.1 創建和配置工程 309
14.5.2 編譯執行 311
第15章 SDIO總線協議與SD卡操作 312
15.1 SD卡簡介 312
15.1.1 SD卡家族 312
15.1.2 SD卡引腳功能定義 313
15.1.3 SD卡內部組成 314
15.1.4 SD卡容量規格 315
15.1.5 SDIO接口規范和總線應用拓撲 315
15.2 SD協議 316
15.2.1 工作模式與狀態 316
15.2.2 命令和響應格式 316
15.2.3 卡識別模式 317
15.2.4 數據傳輸模式 320
15.3 STM32 SDIO控制器 322
15.3.1 控制器總體結構描述 322
15.3.2 SDIO適配器模塊 323
15.3.3 SDIO AHB接口 325
15.4 工程入口及配置 326
15.4.1 實驗硬件資源 326
15.4.2 工程入口文件main.c 327
15.5 SDIO初始化 328
15.5.1 SD卡上電初始化函數SD_PowerON() 330
15.5.2 SD卡規格信息獲取函數SD_InitializeCards() 336
15.6 SDIO卡測試代碼分析 339
15.6.1 塊擦除 340
15.6.2 多塊寫 342
15.6.3 多塊讀 345
15.7 建立工程,編譯和運行 348
15.7.1 建立以下工程文件夾 348
15.7.2 創建文件組和導入源文件 348
15.7.3 編譯執行 349
第16章 移植文件系統FatFs 350
16.1 實驗現象預覽:基于Shell的文件系統命令 350
16.2 FatFs文件系統 351
16.2.1 FatFs特點 351
16.2.2 FatFs在設備系統中的層次與接口 351
16.3 移植FatFs文件系統 352
16.3.1 FatFs源代碼結構 352
16.3.2 基于FatFs應用的常用數據類型說明 353
16.3.3 FatFs的移植 355
16.4 FatFs文件系統應用示例分析 357
16.4.1 工程源代碼邏輯 357
16.4.2 工程源代碼分析 358
16.5 建立工程,編譯和運行 363
16.5.1 創建和配置工程 363
16.5.2 編譯執行 364
第17章 無線接入:Wi-Fi模塊ESP8266應用 365
17.1 無線技術標準:IEEE 802.11 365
17.1.1 IEEE 802.11簡介 365
17.1.2 無線局域網的組網拓撲 366
17.1.3 無線接入過程的三個階段 367
17.2 ESP-WROOM-02模組 368
17.2.1 ESP-WROOM-02性能參數 368
17.2.2 ESP-WROOM-02與主機系統的電路連接 369
17.3 ESP-WROOM-02指令集 370
17.3.1 ESP8266 AT常用指令 370
17.3.2 使用ESP-WROOM-02進行真實通信 373
17.4 封裝ESP-WROOM-02的配置函數 375
17.4.1 ESP-WROOM-02的初始化函數 375
17.4.2 ESP-WROOM-02的配置函數 377
17.4.3 優化USART接收緩存的數據結構 379
17.4.4 ESP-WROOM-02的Shell操作命令 381
17.5 建立工程,編譯和運行 384
17.5.1 工程程序文件 384
17.5.2 創建和配置工程 384
17.5.3 編譯執行 385
第18章 移植?C/OS-III操作系統 387
18.1 ?C/OS-III基礎 387
18.1.1 ?C/OS-III簡介 387
18.1.2 ?C/OS-III內核組成架構 388
18.2 ?C/OS-III任務基礎 390
18.2.1 任務狀態 390
18.2.2 任務控制塊和就緒任務表 391
18.2.3 創建任務 391
18.2.4 任務同步與通信 393
18.3 ?C/OS-III的信號量 393
18.3.1 信號量分類及其應用 393
18.3.2 信號量工作方式 394
18.3.3 信號量應用操作步驟 396
18.4 ?C/OS-III的消息隊列 396
18.4.1 消息隊列工作模型 397
18.4.2 消息隊列應用操作步驟 397
18.5 ?C/OS-III的事件標志組 398
18.5.1 事件標志組工作模型 398
18.5.2 事件標志組應用操作步驟 399
18.6 信號量、消息隊列和事件標志組綜合示例 399
18.6.1 綜合示例任務關系圖 400
18.6.2 任務代碼頭文件task.h 400
18.6.3 任務代碼C文件task.c 402
18.6.4 中斷異常處理文件stm32f10x_it.c 409
18.7 ?C/OS-III移植 410
18.7.1 ?C/OS-III源碼組織架構 410
18.7.2 簡化?C/OS-III源碼組織架構 411
18.7.3 建立基于?C/OS-III的工程 412
18.7.4 ?C/OS-III綜合示例運行效果 414
第19章 基于?C/OS-III的信息系統 415
19.1 系統功能描述 415
19.1.1 系統任務劃分 415
19.1.2 系統實際運行效果 415
19.2 系統任務設計分析 417
19.2.1 Shell任務 417
19.2.2 LED燈閃爍任務 420
19.2.3 事件監測任務 420
19.2.4 系統統計任務 422
19.2.5 無線通信處理任務 425
19.3 工程源代碼(文件)整合 428
19.3.1 主文件main.c 428
19.3.2 任務頭文件task.h 428
19.3.3 includes.h文件 429
19.3.4 任務實現文件task.c 430
19.4 建立工程,編譯和運行 430
19.4.1 建立工程源代碼結構 430
19.4.2 建立文件組,導入源文件 430
19.4.3 編譯執行 431
參考文獻 432
序: