跟工程師學嵌入式開發 ——基于STM32和μC/OS-III ( 簡體 字) |
作者:譚貴,易確,熊立宇 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32 |
譯者: |
出版社:電子工業出版社 | 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 |
序: |