內容簡介
本書的主要內容將著重介紹STM32的庫函數,以及如何使用庫的方式進行開發。使初學者能夠快速入門能夠在此基礎上迅速入門,掌握STM32的開發方法。本書內容基於ARM-CortexM3內核的STM32F429芯片,緊緊圍繞“庫”展開,係統地講述瞭STM32固件庫的原理、使用方法。
作者簡介
劉火良,網名野火,是目前國內大的電子工程師社區阿莫論壇的版主,也是業內暢銷的STM32開發闆供應商野火嵌入式工作室的聯閤創始人。野火工作室是嵌入式開發方式中庫開發方式的倡導者,也是針對初學者在業內推動學習庫開發方法的排頭兵。
目錄
前 言
第1章 如何安裝KEIL5 1
1.1 溫馨提示 1
1.2 獲取KEIL5安裝包 1
1.3 開始安裝KEIL5 1
1.4 安裝STM32芯片包 3
第2章 如何用DAP仿真器下載程序 6
2.1 仿真器簡介 6
2.2 硬件連接 6
2.3 仿真器配置 6
2.4 選擇目標闆 9
2.5 下載程序 9
第3章 初識STM32 10
3.1 什麼是STM32 10
3.2 STM32能做什麼 10
3.2.1 智能手環 11
3.2.2 微型四軸飛行器 12
3.2.3 淘寶眾籌 12
3.3 STM32選型 13
3.3.1 STM32分類 13
3.3.2 STM32命名方法 14
3.3.3 選擇閤適的MCU 14
第4章 寄存器 17
4.1 寄存器簡介 17
4.2 STM32的外觀 17
4.3 芯片裏麵有什麼 18
4.4 存儲器映射 21
4.5 寄存器映射 23
4.5.1 STM32的外設地址映射 23
4.5.2 C語言對寄存器的封裝 26
第5章 新建工程——寄存器版 31
5.1 新建本地工程文件夾工程 31
5.1.1 新建本地工程文件夾 31
5.1.2 新建工程 32
5.2 下載程序 38
第6章 使用寄存器點亮LED 39
6.1 GPIO簡介 39
6.2 GPIO框圖剖析 39
6.2.1 基本結構分析 39
6.2.2 GPIO工作模式 42
6.3 實驗:使用寄存器點亮LED 43
6.3.1 硬件連接 44
6.3.2 啓動文件 44
6.3.3 stm32f4xx.h文件 46
6.3.4 main文件 47
6.3.5 下載驗證 51
第7章 自己寫庫——構建庫函數雛形 52
7.1 STM32函數庫簡介 52
7.2 采用庫來開發及學習的原因 53
7.3 實驗:構建庫函數雛形 53
7.3.1 修改寄存器地址封裝 54
7.3.2 定義訪問外設的結構體指針 55
7.3.3 定義初始化結構體 59
7.3.4 定義引腳模式的枚舉類型 60
7.3.5 定義GPIO初始化函數 62
7.3.6 使用函數點亮LED 64
7.3.7 下載驗證 66
7.3.8 總結 66
第8章 初識STM32標準庫 67
8.1 CMSIS標準及庫層次關係 67
8.1.1 庫目錄、文件簡介 68
8.1.2 各庫文件間的關係 74
8.2 使用幫助文檔 75
8.2.1 常用官方資料 75
8.2.2 初識庫函數 76
第9章 新建工程——庫函數版 78
9.1 新建本地工程文件夾 78
9.2 新建工程 79
9.3 配置魔術棒選項卡 82
9.4 下載器配置 85
9.5 選擇Flash大小 86
第10章 GPIO輸齣——使用固件庫點亮LED 88
10.1 硬件設計 88
10.2 軟件設計 88
10.2.1 編程要點 89
10.2.2 代碼分析 89
10.2.3 下載驗證 94
10.3 STM32標準庫補充知識 94
第11章 GPIO輸入——按鍵檢測 98
11.1 硬件設計 98
11.2 軟件設計 99
11.2.1 編程要點 99
11.2.2 代碼分析 99
11.2.3 下載驗證 102
第12章 GPIO——位帶操作 103
12.1 位帶簡介 103
12.1.1 外設位帶區 103
12.1.2 SRAM位帶區 104
12.1.3 位帶區和位帶彆名區地址轉換 104
12.2 GPIO位帶操作 105
第13章 啓動文件 108
13.1 啓動文件簡介 108
13.2 查找ARM匯編指令 108
13.3 啓動文件代碼講解 109
第14章 RCC——使用HSE/HSI配置時鍾 116
14.1 RCC主要作用——時鍾部分 116
14.2 RCC框圖剖析——時鍾樹 116
14.2.1 係統時鍾 116
14.2.2 其他時鍾 121
14.3 配置係統時鍾實驗 122
14.3.1 使用HSE 122
14.3.2 使用HSI 122
14.3.3 硬件設計 123
14.3.4 軟件設計 123
14.3.5 下載驗證 129
第15章 STM32中斷應用概覽 130
15.1 異常類型 130
15.2 NVIC簡介 131
15.2.1 NVIC寄存器簡介 131
15.2.2 NVIC中斷配置固件庫 132
15.3 優先級的定義 132
15.3.1 優先級定義 132
15.3.2 優先級分組 133
15.4 中斷編程 134
第16章 EXTI——外部中斷/事件控製器 136
16.1 EXTI簡介 136
16.2 EXTI功能框圖 136
16.3 中斷/事件綫 138
16.4 EXTI初始化結構體詳解 139
16.5 外部中斷控製實驗 139
16.5.1 硬件設計 140
16.5.2 軟件設計 140
16.5.3 下載驗證 144
第17章 SysTick——係統定時器 145
17.1 SysTick簡介 145
17.2 SysTick寄存器介紹 145
17.3 SysTick定時實驗 146
17.3.1 硬件設計 146
17.3.2 軟件設計 146
第18章 通信的基本概念 152
18.1 串行通信與並行通信 152
18.2 全雙工、半雙工及單工通信 153
18.3 同步通信與異步通信 153
18.4 通信速率 154
第19章 USART——串口通信 155
19.1 串口通信協議簡介 155
19.1.1 物理層 155
19.1.2 協議層 158
19.2 STM32的USART簡介 159
19.3 USART功能框圖 160
19.4 USART初始化結構體詳解 166
19.5 USART1接發通信實驗 167
19.5.1 硬件設計 168
19.5.2 軟件設計 168
19.5.3 下載驗證 173
19.6 USART1指令控製RGB彩燈實驗 174
19.6.1 硬件設計 174
19.6.2 軟件設計 174
19.6.3 下載驗證 179
第20章 DMA 180
20.1 DMA簡介 180
20.2 DMA功能框圖 180
20.3 DMA數據配置 184
20.4 DMA初始化結構體詳解 188
20.5 DMA存儲器到存儲器模式實驗 190
20.5.1 硬件設計 190
20.5.2 軟件設計 190
20.5.3 下載驗證 195
20.6 DMA存儲器到外設模式實驗 195
20.6.1 硬件設計 195
20.6.2 軟件設計 195
20.6.3 下載驗證 199
第21章 常用存儲器介紹 200
21.1 存儲器種類 200
21.2 RAM存儲器 200
21.2.1 DRAM 201
21.2.2 SRAM 202
21.2.3 DRAM與SRAM的應用場閤 202
21.3 非易失性存儲器 202
21.3.1 ROM存儲器 202
21.3.2 Flash存儲器 203
第22章 I2C——讀寫EEPROM 205
22.1 I2C協議簡介 205
22.1.1 I2C物理層 205
22.1.2 協議層 206
22.2 STM32的I2C特性及架構 209
22.2.1 STM32的I2C外設簡介 209
22.2.2 STM32的I2C架構剖析 210
22.2.3 通信過程 212
22.3 I2C初始化結構體詳解 213
22.4 I2C——讀寫EEPROM實驗 215
22.4.1 硬件設計 215
22.4.2 軟件設計 216
22.4.3 下載驗證 234
第23章SPI——讀寫串行Flash 235
23.1 SPI協議簡介 235
23.1.1 SPI物理層 235
23.1.2 協議層 236
23.2 STM32的SPI特性及架構 238
23.2.1 STM32的SPI外設簡介 238
23.2.2 STM32的SPI架構剖析 239
23.2.3 通信過程 241
23.3 SPI初始化結構體詳解 242
23.4 SPI——讀寫串行Flash實驗 243
23.4.1 硬件設計 243
23.4.2 軟件設計 244
23.4.3 下載驗證 264
第24章串行Flash文件係統FatFs 265
24.1 文件係統 265
24.2 FatFs文件係統簡介 266
24.2.1 FatFs的目錄結構 266
24.2.2 FatFs幫助文檔 266
24.2.3 FatFs源碼 267
24.3 FatFs文件係統移植實驗 268
24.3.1 FatFs程序結構圖 268
24.3.2 硬件設計 269
24.3.3 FatFs移植步驟 269
24.3.4 FatFs底層設備驅動函數 271
24.3.5 FatFs功能配置 276
24.3.6 FatFs功能測試 277
24.3.7 下載驗證 280
24.4 FatFs功能使用實驗 281
24.4.1 硬件設計 281
24.4.2 軟件設計 281
24.4.3 下載驗證 286
第25章FMC——擴展外部SDRAM 287
25.1 SDRAM控製原理 287
25.1.1 SDRAM信號綫 288
25.1.2 控製邏輯 289
25.1.3 地址控製 289
25.1.4 SDRAM的存儲陣列 289
25.1.5 數據輸入輸齣 289
25.1.6 SDRAM的命令 290
25.1.7 SDRAM的初始化流程 295
25.1.8 SDRAM的讀寫流程 296
25.2 FMC簡介 297
25.3 FMC框圖剖析 298
25.4 FMC的地址映射 300
25.5 SDRAM時序結構體 302
25.6 SDRAM初始化結構體 303
25.7 SDRAM命令結構體 304
25.8 FMC——擴展外部SDRAM實驗 305
25.8.1 硬件設計 305
25.8.2 軟件設計 305
25.8.3 下載驗證 316
第26章LTDC/DMA2D——液晶顯示 317
26.1 顯示器簡介 317
26.1.1 液晶顯示器 317
26.1.2 LED和OLED顯示器 318
26.1.3 顯示器的基本參數 319
26.2 液晶屏控製原理 319
26.2.1 液晶麵闆的控製信號 320
26.2.2 液晶數據傳輸時序 321
26.2.3 顯存 323
26.3 LTDC液晶控製器簡介 323
26.3.1 圖像數據混閤 323
26.3.2 LTDC結構框圖剖析 324
26.4 DMA2D圖形加速器簡介 327
26.5 LTDC初始化結構體 329
26.6 LTDC層級初始化結構體 331
26.7 DMA2D初始化結構體 334
26.8 LTDC/DMA2D——液晶顯示實驗 336
26.8.1 硬件設計 336
26.8.2 軟件設計 338
26.8.3 下載驗證 358
第27章LTDC——液晶顯示中英文 359
27.1 字符編碼 359
27.1.1 ASCII編碼 359
27.1.2 中文編碼 362
27.1.3 Unicode字符集和編碼 365
27.1.4 UTF-32 365
27.1.5 UTF-16 365
27.1.6 UTF-8 366
27.1.7 BOM 367
27.2 字模簡介 367
27.2.1 字模的構成 368
27.2.2 字模顯示原理 368
27.2.3 如何製作字模 370
27.2.4 字模尋址公式 371
27.2.5 存儲字模文件 372
27.3 LTDC——各種模式的液晶顯示字符實驗 372
27.3.1 硬件設計 373
27.3.2 顯示ASCII編碼的字符 373
27.3.3 顯示GB2312編碼的字符 382
27.3.4 顯示任意大小的字符 391
27.3.5 下載驗證 398
第28章電容觸摸屏——觸摸畫闆 399
28.1 觸摸屏簡介 399
28.1.1 電阻觸摸屏檢測原理 399
28.1.2 電容觸摸屏檢測原理 401
28.2 電容觸摸屏控製芯片 402
28.2.1 GT9157芯片的引腳 403
28.2.2 上電時序與I2C設備地址 404
28.2.3 寄存器配置 404
28.2.4 讀取坐標信息 406
28.3 電容觸摸屏——觸摸畫闆實驗 408
28.3.1 硬件設計 408
28.3.2 軟件設計 409
28.3.3 下載驗證 430
第29章ADC——電壓采集 431
29.1 ADC簡介 431
29.2 ADC功能框圖剖析 431
29.2.1 ADC功能 431
29.2.2 電壓轉換 437
29.3 ADC初始化結構體詳解 437
29.4 獨立模式單通道采集實驗 438
29.4.1 硬件設計 439
29.4.2 軟件設計 439
29.4.3 下載驗證 443
29.5 獨立模式多通道采集實驗 443
29.5.1 硬件設計 443
29.5.2 軟件設計 443
29.5.3 下載驗證 449
29.6 三重ADC交替模式采集實驗 449
29.6.1 硬件設計 449
29.6.2 軟件設計 450
29.6.3 下載驗證 455
第30章TIM——基
前言/序言
本書的編寫風格本書著重講解STM32F429的外設以及外設的應用,力爭全麵分析每個外設的功能框圖和使用方法,讓讀者可以零死角地玩轉STM32F429。
基本每個章節對應一個外設,每章的主要內容大概分為3個部分,第1部分為簡介,第2部分為外設功能框圖分析,第3部分為代碼講解。
外設簡介則是用作者自己的話把外設概括性地介紹一遍,力求語句簡短,通俗易懂,避免照抄數據手冊中的介紹。
外設功能框圖分析是每章的重點,該部分會詳細講解功能框圖各部分的作用,是學習STM32F429的精髓所在,掌握瞭整個外設的框圖則可以熟練地使用該外設,熟練地編程,日後學習其他型號的單片機也會得心應手。即使單片機的型號不同,外設的框圖基本也是一樣的。這一步的學習比較枯燥,但是必須下功夫鑽研,方能學有所成。
代碼分析則是講解使用該外設的實驗過程,主要分析代碼流程和一些編程注意事項。在掌握瞭框圖之後,學習代碼部分則會輕而易舉。
本書的學習方法本書第3~11章連貫性非常強,屬於單片機底層知識的講解,對後麵章節的學習起著“韆斤頂”的作用,讀者需要按照順序學習,不可跳躍閱讀。學完這部分之後,能力稍強的用戶基本可以入門STM32。其餘章節連貫性較弱,可根據項目需要選擇閱讀。另外本書配套200集手把手教學視頻和大量的PPT,觀看視頻輔助學習,效果會更佳。相關視頻請到秉火論壇下載。
本書的參考資料本書的參考資料為《STM32F4xx中文參考手冊》和《Cortex-M4內核參考手冊》,這兩本是ST官方的手冊,屬於精華版,內容麵麵俱到,無所不包。限於篇幅問題,本書著重於STM32F429的功能框圖分析和代碼講解,有關寄存器的詳細描述則略過,在學習本書的時候,涉及寄存器描述部分還請參考上述兩本手冊,這樣學習效果會更佳。
本書的配套硬件和程序本書配套的硬件平颱為秉火STM32F429挑戰者開發闆,見圖0-1。如果配閤該硬件平颱做實驗,必會達到事半功倍的學習效果,省去中間移植時遇到的各種問題。書中提到的配套工程程序可以在秉火論壇下載。
本書的技術論壇如果在學習過程中遇到問題,可以到秉火論壇發帖交流,開源共享,共同進步。
鑒於作者水平有限,本書難免存在紕漏,熱心的讀者也可把勘誤發到論壇,以便我們改進。祝你學習愉快!M4的世界,秉火與您同行!
STM32庫開發實戰指南:基於STM32F4 下載 mobi epub pdf txt 電子書