-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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庫開發實戰指南

( 簡體 字)
作者:劉火良 楊森 編著類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32
譯者:
出版社:機械工業出版社STM32庫開發實戰指南 3dWoo書號: 35806
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:6/1/2013
頁數:480
光碟數:1
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787111426370
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

單片機是對8/16位MCU(微控制器)的另外一種叫法。傳統的8/16位單片機,久經歲月的洗禮,仍然在工業控制應用中大放光芒。然而,現在的工程師面對的更多的工業控制產品需求是多功能、易用界面、低功耗以及多任務等。基于這樣的需求,以往的8/16位單片機已不能滿足要求,工程師必須尋找新的符合要求的MCU。工程師雖然可以選擇諸如ARM7、ARM9這類速度更快的32位MCU,但是鑒于對成本和開發門檻等種種考慮,它們還是不能滿足需求。正是看準了這個市場, ARM公司推出了其全新的基于ARMv7架構的32位Cortex-M3 微控制器內核。緊隨其后,ST(意法半導體)公司就推出了基于Cortex-M3內核的MCU——STM32。STM32憑借其產品線的多樣化、極高的性價比、簡單易用的開發方式,迅速在眾多Cortex-M3 MCU中脫穎而出,成為最閃亮的一顆新星。STM32一上市就迅速占領了中低端MCU市場,頗有星火燎原之勢,這與它倡導的基于固件庫的開發方式密不可分。采用庫開發的方式可以快速上手,僅通過調用庫里面的API(應用程序接口)就可以迅速搭建一個大型的程序,寫出各種用戶所需的應用,這就大大降低了學習的門檻和開發周期。然而,又因為在開發中只是調用API,而忽略了底層寄存器的操作,庫開發被習慣了寄存器開發方式的工程師指為“于浮沙筑高臺”,沒有學習的價值。這種看法具有一定的片面性,他顯然沒有意識到這是一種全新的學習方法。試問,對于初學者,面對一個32位且有如此多寄存器的單片機,如果還像我們以往操作8位機,通過配置寄存器的方式來實現,那會是多么繁雜的一項工作?除此之外,庫的開發方式自頂向下,它是邁向更高端嵌入式Linux開發的一個墊腳石。

庫開發已成主流,這是不爭的事實。STM32固件庫之所以流行并被大家所喜愛,可以歸結為以下兩個原因:

(1)技術潮流

1)于個人:庫開發大大地降低了學習的門檻,提高了學習的效率,使個人初步了解了大的程序設計,是一種自頂向下的學習方法,可以從上層的API層層跟蹤到底層,可以徹徹底底地了解寄存器,了解CPU的內存分布,再到啟動代碼、開發環境的配置等。如果再深究,還會涉及編譯器甚至工具鏈。庫的學習,可不僅僅是簡單地調用API,我們需要去分析這個庫是如何構建的,是如何從內存到寄存器,寄存器到結構體,結構體到更各層的API,再到層層外設的文件關聯。這里面涉及了太多的C語言的知識,如關鍵字、宏、結構體、指針、類型轉換、條件編譯、斷言、內聯函數等。這些知識的學習,又豈能說是“于浮沙筑高臺”。如果你的C語言還停留在基本語法的階段,那么通過對庫的使用和學習,你的C語言將會得到脫胎換骨的提升。學會了庫開發還可以快速地遷移到ST其他系列單片機的學習,如STM32F207、STM32F407,這些MCU的固件庫基本上都是兼容的。反觀如此龐大的固件庫,還要相互兼容,細心的人一定可以從中獲益良多!

2)于公司:在公司產品開發中,產品上市速度是非常重要的成功因素,庫開發可以極大地縮短產品研發周期,以便快速搶占市場。而且庫讓程序的維護成本更低,程序的升級更快捷。用庫來開發,真可謂事半功倍,一箭雙雕。

(2)市場趨勢

有人曾經質疑STM32的固件庫降低了MCU的性能,然而,他卻沒有考慮到STM32的性能和資源已經不是傳統的8/16單片機可比的了。強大的硬件應該與消耗這些資源的軟件相匹配,否則資源就被浪費了。硬件和軟件是相輔相成、共同促進的。所以硬件改善后,工程師對于MCU的關注應該從全局著眼。

本書采用MDK開發環境,全部例程基于3.5.0版本的固件庫講解,不是簡單地調用庫,而是試圖通過對固件庫的使用詳細講解什么是庫、為什么使用庫、怎樣使用庫等一系列問題,進而引導讀者使用高效率的庫開發方法。

本書采用原理分析、代碼講解、實驗運用這三點連線的講解方式,循序漸進,適合在校大學生和科研機構開發人員學習使用。全書分為四個部分,第一部分(第1∼5章)是庫開發初級篇,涉及入門的兩個主題。一個是嵌入式工程師成長之路,屬于方法論的問題,涉及了一個工程師從學生時代開始,在每一個不同的階段應該學習什么、該如何進階等。另一個是通過對庫的了解和GPIO的學習,讓讀者快速掌握STM32的開發方法,這是入門的第一步。第二部分(第6∼16章)是庫開發中級篇,講解了STM32各個外設的使用,是學習的一個進階階段,也是STM32學習的重中之重。第三部分(第17∼25章)是庫開發高級篇,是STM32各個外設的實戰演練,如MP3、液晶、攝像頭、Wi-Fi等,是屬于項目實戰的例子,一般可直接用于工程項目的開發。第四部分(第26∼28章)是庫開發系統篇,這是嵌入式系統開發的必經之路,是區別裸與不裸的分水嶺;這部分講解了μ C/OS最新版本μ C/OS-Ⅲ在STM32中的移植,通過該移植應用實踐,相信可以為以后進階到WinCE、Linux操作系統的學習打下堅實的基礎。

致??謝

首先要感謝本書的策劃編輯張國強先生,是他對STM32的關注促成了這本書的出版,同時在我們撰寫書稿時對本書提出了寶貴的寫作建議,并對書稿進行了仔細審閱。其次要感謝野火工作室的成員廖錦松、曾云清等人提供的部分例程及資料;感謝好友何卓波對書稿內容的校正工作。

由于本書涉及的知識面廣,時間又倉促,限于筆者的水平和經驗,疏漏之處在所難免,懇請專家和讀者批評指正,可以發送郵件到wildfireteam@163.com 與作者進行交流,或者到阿莫論壇野火M3專區 http://www.amobbs.com 進行討論。



劉火良 楊森
內容簡介:

橫亙在STM32初學者面前最大的一個問題就是選擇用庫的方式開發,還是用寄存器的方式開發。對此,曾在網上引發了一場大討論,大家眾說紛紜,仁者見仁,智者見智。從深層次看,這個問題其實并不是一個對開發方式進行選擇的問題。
在ARM還沒有打算進入MCU領域的時候,大多數單片機工程師的學習是從8位單片機開始的,而且以51單片機居多。由于51單片機的寄存器非常少,很容易記憶,那么使用操作寄存器的方式進行單片機程序開發不但容易,而且高效。隨著ARM Cortex-M內核和STM32的發布,這個局面就被打破了。
在蘋果公司旗艦產品iPhone和iPad的帶領下,以觸控屏應用為代表的人機交互方式席卷了全球,當然,中國也未能幸免。在中國,連最保守的工業領域也開始接受這種先進的人機交互方式。然而,這時候,工業界普遍應用的微控制器仍然是51單片機,它不能滿足工業界對新型人機交互體驗的需求。STM32的出現填補了工業界這個缺憾,從它發布開始,STM32迅速躥紅,成為MCU領域一顆耀眼的新星。原來熟悉了51單片機的工程師不得不開始學習新的基于Cortex-M架構的MCU。然而,他們很快發現一個問題,對32位MCU寄存器的操作是一個極富挑戰的事情,因為寄存器太多了。為了解決這個問題,ST公司組織自己的工程技術人員開發了一個針對STM32的固件庫。通過對寄存器的封裝,開發人員只須簡單地調用固件庫函數,就能夠完成復雜的開發任務。根據ST公司的統計,有大約一半的初學者選擇了庫開發的方式。他們并沒有回過頭去學習復雜的寄存器操作,而是選擇直接從固件庫入手,很快掌握了STM32的開發技術。關于寄存器的開發方式好,還是固件庫的開發方式好的爭議就在這兩個人群中蔓延開了。
那么究竟哪種方式好呢?這個問題很難回答。如果你本身就是一個完全沒有接觸過單片機的“白丁”,那么建議你還是不要冒險體驗寄存器的開發方式了。你可以在嘗試掌握了庫開發的方式之后再去重新體驗一下寄存器的開發方式。如果你已經掌握了某個單片機的開發,那么沿用原來的思路是一個省腦細胞的決定。但是如果你的志向不是僅僅屈居一個單片機碼農,你若有更高的理想和抱負,建議你用批判和分析的目光學習一下固件庫的開發方式。因為當你邁向更高階的ARM Linux嵌入式開發的時候,你會發現這個功課是值得做的,它給了你一把打開嵌入式Linux開發大門的鑰匙——自頂向下的開發方式和思想。
目錄:

前??言

第一部分?庫開發初級篇

第1章?為什么學習STM32 2

1.1 嵌入式技術知識結構 2

1.2 嵌入式工程師成長之路 3

1.3 為什么學習STM32 4

1.4 如何學習STM32 4

第2章?初識STM32固件庫 5

2.1 STM32神器之庫開發 5

2.1.1 什么是STM32庫 5

2.1.2 為什么采用庫開發 6

2.2 STM32結構及庫層次關系 7

2.2.1 CMSIS標準 7

2.2.2 庫目錄、文件簡介 8

2.2.3 STM32固件庫文件間的關系 14

2.2.4 使用庫幫助文檔 15

第3章?GPIO入門之流水燈 18

3.1 安裝MDK 18

3.2 建立工程模板 19

3.2.1 新建工程 19

3.2.2 配置J-LINK硬件調試 25

3.3 如何編譯和下載程序 27

3.3.1 如何編譯程序 27

3.3.2 如何下載程序 27

第4章?深入分析流水燈例程 30

4.1 STM32的GPIO 30

4.2 STM32的地址映射 33

4.2.1 溫故而知新——stm32f10x.h文件 33

4.2.2 外設基地址 35

4.2.3 總線外設基地址 36

4.2.4 寄存器組基地址 37

4.3 STM32固件庫對寄存器的封裝 38

4.4 STM32的時鐘系統 39

4.4.1 時鐘樹&時鐘源 39

4.4.2 高速外部時鐘 41

4.4.3 HCLK、FCLK、PCLK1、PCLK2 42

4.5 LED具體代碼分析 42

4.5.1 實驗描述及工程文件清單 42

4.5.2 配置工程環境 43

4.5.3 編寫用戶文件 44

4.5.4 初始化結構體——GPIO_InitTypeDef類型 46

4.5.5 初始化庫函數——GPIO_Init() 47

4.5.6 開啟外設時鐘 48

4.5.7 控制I/O輸出高、低電平 52

4.5.8 led.h文件 52

4.5.9 main文件 53

4.6 GPIO_Init()函數的實現 55

4.6.1 規范的位操作方法 55

4.6.2 GPIO_Init()實現代碼分析 55

4.6.3 再論開發方式 60

4.7 開發步驟總結 61

第5章?調試程序 62

5.1 MDK軟件仿真調試 62

5.2 使用J-LINK進行硬件調試 64

5.2.1 硬件調試 64

5.2.2 軟件編譯過程 65

5.3 MDK使用小技巧 66

第二部分?庫開發中級篇

第6章?GPIO再舉例之按鍵實驗 70

6.1 GPIO的8種工作模式 70

6.1.1 4種輸入模式 71

6.1.2 4種輸出模式 71

6.2 按鍵實驗分析 72

6.3 按鍵代碼分析 72

6.3.1 實驗描述及工程文件清單 72

6.3.2 配置工程環境 73

6.3.3 main文件 73

6.3.4 GPIO初始化配置 74

6.3.5 利用固件庫的數據類型 75

6.3.6 實現LED反轉 77

6.3.7 實驗現象 77

第7章?EXTI之按鍵中斷實驗 78

7.1 STM32的中斷和異常 78

7.2 NVIC中斷控制器 81

7.2.1 NVIC結構體成員 81

7.2.2 搶占優先級和響應優先級 82

7.2.3 NVIC的優先級組 83

7.3 EXTI外部中斷 83

7.4 中斷檢測按鍵實驗分析 84

7.4.1 實驗描述及工程文件清單 84

7.4.2 配置工程環境 85

7.4.3 main文件 86

7.4.4 配置外部中斷 86

7.4.5 AFIO時鐘 87

7.4.6 NVIC初始化配置 88

7.4.7 EXTI初始化配置 89

7.4.8 編寫中斷服務函數 89

7.4.9 實驗現象 91

第8章?串口通信(USART) 92

8.1 異步串口通信協議 92

8.2 直通線和交叉線 93

8.3 串口工作過程分析 94

8.3.1 波特率控制 94

8.3.2 收發控制 96

8.3.3 數據存儲轉移 96

8.4 串口通信實驗分析 96

8.4.1 實驗描述及工程文件清單 96

8.4.2 配置工程環境 97

8.4.3 main文件 97

8.4.4 USART初始化配置 98

8.4.5 printf()函數重定向 101

8.4.6 USART1_printf()函數 103

8.4.7 實驗現象 106

第9章?庫函數開發小結 107

9.1 初始化 107

9.2 數據輸入輸出 108

9.3 狀態位、標志位 108

9.3.1 事件 109

9.3.2 標志位的檢查與清除 109

9.4 外設函數分類 110

第10章?DMA——為CPU減負 112

10.1 DMA功能簡介 112

10.2 DMA工作分析 112

10.3 DMA實例之串口通信 113

10.3.1 實驗描述及工程文件清單 113

10.3.2 配置工程環境 114

10.3.3 main文件 114

10.3.4 DMA初始化 115

10.3.5 使用DMA中斷 121

10.3.6 實驗現象 123

第11章?ADC實驗(DMA方式) 124

11.1 ADC簡介 124

11.2 STM32的ADC主要技術指標 124

11.3 ADC工作過程分析 125

11.4 ADC采集數據實例(采用DMA模式) 126

11.4.1 實驗描述及工程文件清單 127

11.4.2 配置工程環境 128

11.4.3 main文件 128

11.4.4 ADC初始化 129

11.4.5 計算電壓值 138

11.4.6 實驗現象 138

第12章?SysTick(系統滴答定時器) 139

12.1 SysTick——操作系統的心跳 139

12.2 SysTick工作分析 140

12.3 使用SysTick精確延時實驗分析 141

12.3.1 實驗描述及工程文件清單 142

12.3.2 配置工程環境 142

12.3.3 main文件 143

12.3.4 配置并啟動SysTick 143

12.3.5 定時時間的計算 147

12.3.6 編寫中斷服務函數 147

12.3.7 使用SysTick測量時間的功能 149

12.3.8 實驗現象 149

第13章?STM32定時器 150

13.1 定時器功能簡介 150

13.2 定時器工作分析 150

13.2.1 基本定時器 150

13.2.2 通用定時器 150

13.2.3 高級定時器 155

13.3 PWM輸出實例分析 157

13.3.1 實驗描述及工程文件清單 157

13.3.2 配置工程環境 157

13.3.3 main文件 158

13.3.4 定時器初始化 159

13.3.5 實驗現象 164

第14章?I2C接口 168

14.1 I2C協議簡介 168

14.1.1 物理層 168

14.1.2 協議層 169

14.2 STM32的I2C特性及架構 170

14.2.1 I2C接口特性 170

14.2.2 I2C架構 170

14.3 I2C接口讀寫EEPROM實驗 171

14.3.1 實驗描述及工程文件清單 171

14.3.2 配置工程環境 171

14.3.3 main文件 172

14.3.4 I2C接口初始化 173

14.3.5 對EEPROM的讀寫操作 177

14.3.6 使用I2C讀寫EEPROM流程總結 186

14.3.7 實驗現象 186

第15章?SPI模塊 188

15.1 SPI協議簡介 188

15.1.1 SPI信號線 188

15.1.2 SPI模式 189

15.2 STM32的SPI特性及架構 190

15.2.1 STM32的SPI特性 190

15.2.2 STM32的SPI架構分析 190

15.3 SPI接口讀取Flash實例分析 191

15.3.1 實驗描述及工程文件清單 192

15.3.2 配置工程環境 193

15.3.3 main文件 193

15.3.4 SPI初始化 195

15.3.5 控制Flash的命令 199

15.3.6 讀取廠商ID 202

15.3.7 擦除Flash內容 203

15.3.8 向Flash寫入數據 207

15.3.9 從Flash讀取數據 210

15.3.10 小結 211

15.3.11 實驗現象 211

第16章?CAN控制器 212

16.1 CAN協議簡介 212

16.1.1 物理層 212

16.1.2 CAN的報文種類及結構 213

16.1.3 同步 215

16.2 STM32的CAN特性及架構 217

16.2.1 CAN特性 217

16.2.2 CAN架構 218

16.3 雙CAN通信實驗分析 219

16.3.1 實驗描述及工程文件清單 219

16.3.2 配置工程環境 220

16.3.3 main文件 221

16.3.4 配置CAN接口 223

16.3.5 打包報文 232

16.3.6 發送報文 234

16.3.7 接收報文、編寫中斷服務函數 234

16.3.8 實驗小結 236

16.3.9 實驗現象 237

第三部分?庫開發高級篇

第17章?SDIO之SD卡驅動 240

17.1 SD協議簡介 240

17.1.1 卡的種類 240

17.1.2 SDIO基本架構 241

17.2 STM32的SDIO接口 241

17.2.1 從SDIO的時鐘說起 242

17.2.2 SDIO的命令格式 242

17.2.3 數據傳輸格式 243

17.3 SD卡讀寫實驗分析 243

17.3.1 實驗描述及工程文件清單 243

17.3.2 配置工程環境 244

17.3.3 main文件 246

17.3.4 SDIO初始化 247

17.3.5 卡的上電識別流程 249

17.3.6 卡的初始化流程 256

17.3.7 對SD卡進行讀寫 259

17.3.8 原版官方驅動例程的bug 263

17.3.9 實驗現象 264

第18章?文件系統之

FATFS_R0.09 265

18.1 什么是文件系統 265

18.2 FATFS文件系統簡介 266

18.2.1 FATFS的目錄結構 266

18.2.2 FATFS幫助文檔 266

18.2.3 FATFS源碼 267

18.3 移植FATFS文件系統實驗 267

18.3.1 實驗描述及工程文件清單 267

18.3.2 配置工程環境 269

18.3.3 為文件系統添加底層驅動 270

18.3.4 添加簡體中文和

長文件名支持 274

18.3.5 main文件 274

18.3.6 實驗現象 277

第19章?MP3播放器 278

19.1 MP3文件探秘 278

19.1.1 文件格式 278

19.1.2 MP3文件的原始數據 278

19.1.3 MP3文件格式 279

19.2 VS1003硬件解碼芯片 279

19.2.1 VS1003芯片簡介 280

19.2.2 TDA1308芯片 280

19.3 MP3播放器實驗 280

19.3.1 實驗描述及工程文件清單 280

19.3.2 配置工程環境 282

19.3.3 main文件 283

19.3.4 控制VS1003進入準備狀態 284

19.3.5 播放MP3文件 286

19.3.6 STM32的堆棧 291

19.3.7 實驗現象 294

第20章?USB大容量存儲器實例 295

20.1 USB協議分析 295

20.1.1 協議版本 295

20.1.2 USB電氣特性 295

20.1.3 USB通信模型 296

20.1.4 USB枚舉 298

20.2 STM32的USB控制器 299

20.3 USB讀取SD卡——模擬U盤實驗 301

20.3.1 實驗描述及工程文件清單 301

20.3.2 配置工程環境 302

20.3.3 USB固件庫說明 303

20.3.4 main文件 305

20.3.5 基本配置 306

20.3.6 USB初始化 308

20.3.7 中斷服務函數 310

20.3.8 BOT和SCSI協議 313

20.3.9 實驗現象 316

第21章?LCD觸摸屏畫板 317

21.1 LCD控制器簡介 317

21.1.1 ILI9341控制器結構 317

21.1.2 像素點的數據格式 317

21.1.3 ILI9341的通信時序 319

21.2 用STM32驅動LCD 320

21.2.1 FSMC簡介 320

21.2.2 用FSMC模擬8080時序 322

21.3 觸摸屏感應原理 322

21.4 TSC2046觸摸屏控制器 323

21.5 LCD觸摸屏畫板實驗 323

21.5.1 實驗描述及工程文件清單 323

21.5.2 配置工程環境 325

21.5.3 main文件 326

21.5.4 初始化FSMC模式 327

21.5.5 FSMC模擬8080讀寫

參數、命令 332

21.5.6 液晶屏畫點函數 334

21.5.7 觸摸屏校正 338

21.5.8 檢測觸點、畫點 341

21.5.9 實驗現象 342

第22章?字庫及BMP圖片顯示 343

22.1 什么是字模 343

22.2 制作字模 344

22.3 BMP圖片格式 347

22.4 顯示中英文及BMP圖片實驗 351

22.4.1 實驗描述及工程文件清單 351

22.4.2 配置工程環境 352

22.4.3 main文件 352

22.4.4 顯示漢字 353

22.4.5 在SD卡上讀取與保存BMP圖像 358

22.4.6 實驗現象 364

第23章?OV7670攝像頭驅動 365

23.1 攝像頭的分類 365

23.1.1 數字攝像頭與模擬攝像頭的區別 365

23.1.2 CCD與CMOS的區別 365

23.2 OV7670介紹 366

23.2.1 OV7670功能框架 366

23.2.2 OV7670管腳封裝 367

23.3 SCCB總線 368

23.3.1 SCCB接口定義 368

23.3.2 SCCB時序描述 370

23.4 攝像頭模塊 372

23.4.1 攝像頭模塊硬件介紹 372

23.4.2 OV7670輸出時序 372

23.4.3 FIFO時序 375

23.4.4 攝像頭的驅動原理 376

23.5 攝像頭驅動實驗 377

23.5.1 實驗描述及工程文件清單 377

23.5.2 配置工程環境 379

23.5.3 main文件 379

23.5.4 SCCB總線的軟件實現 380

23.5.5 初始化OV7670 386

23.5.6 采集并顯示圖像 388

23.5.7 實驗現象 393

第24章?以太網及LwIP協議棧移植 394

24.1 互聯網模型 394

24.2 以太網 395

24.2.1 PHY層 395

24.2.2 MAC子層 396

24.2.3 以太網控制器 397

24.3 MAC之上的網絡層 398

24.3.1 為什么在MAC之上還有分層 398

24.3.2 TCP/IP協議中各層次的功能 398

24.3.3 LwIP協議棧 400

24.4 ENC28J60+LwIP 以太網實驗 401

24.4.1 實驗描述及工程文件清單 401

24.4.2 配置工程環境 402

24.4.3 main文件 403

24.4.4 LwIP對底層數據結構的封裝 404

24.4.5 初始化協議棧 408

24.4.6 LwIP對底層操作的封裝 410

24.4.7 輪詢和計時 415

24.4.8 opt.h文件和debug 416

24.4.9 LwIP應用 420

24.4.10 網頁服務器 421

24.4.11 實驗現象 426

第25章?Wi-Fi模塊EMW3180驅動 430

25.1 資料與工具下載 430

25.2 EMW3180簡介 430

25.3 EMW3180驅動實驗 434

25.3.1 實驗描述及工程文件清單 434

25.3.2 配置工程環境 435

25.3.3 EMSP_API函數 435

25.3.4 API函數一覽 436

25.3.5 main文件 439

25.3.6 em380c_hal.c文件 441

25.3.7 實驗現象 445

第四部分?庫開發系統篇

第26章?μC/OS-Ⅲ及其源代碼介紹 448

26.1 μC/OS簡介 448

26.1.1 操作系統與裸機的區別 448

26.1.2 μC/OS實時操作系統 448

26.2 μC/OS-Ⅲ與μC/OS-Ⅱ的主要區別 450

26.3 μC/OS-Ⅲ源碼 450

26.4 μC/OS-Ⅲ工程架構 452

第27章?移植μC/OS-Ⅲ到STM32 454

27.1 搭建μC/OS工程文件結構 454

27.2 修改μC/OS代碼 459

27.2.1 修改os_cpu.h文件 459

27.2.2 修改os_cpu_c.c 459

27.2.3 修改 os_cpu_a.asm文件 460

27.2.4 修改cpu_a.asm文件 461

27.2.5 修改startup_stm32f10x_hd.s文件 462

27.2.6 修改stm32f10x_it.c文件 463

27.3 編寫用戶文件 464

27.3.1 編寫includes.h文件 464

27.3.2 編寫BSP相關文件 465

27.3.3 創建任務 466

27.4 配置μC/OS-Ⅲ 468

第28章?運行多任務 473

28.1 創建用戶任務 473

28.2?編寫用戶代碼 476

28.3 任務執行流程 479

參考文獻 482
序: