首頁  |  新熱  |  書單  |  隨機  |  求書  |  繁體

《跟工程師學嵌入式開發:基于STM32和μC_OS-Ⅲ》譚貴【文字版_PDF電子書_下載】

《跟工程師學嵌入式開發:基于STM32和μC_OS-Ⅲ》封面圖片

內容簡介:

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

作者簡介:

譚貴,男,北京大學計算機科學與技術學士畢業,現供職于富士康科技集團,熱愛嵌入式開發技術,精通C、Java語言,Tcl和bash腳本應用;熟悉從MCU裸板外設驅動開發和uCosII實時操作系統的移植,以及基于Linux系統的嵌入式應用開發。

目  錄:

第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

已經過安全軟件檢測無毒,請您放心下載。

猜你喜歡

 
后一技巧除32技巧