基於STM32F4

《基於STM32F4》是於2017年2月機械工業出版社出版的一本圖書,作者是劉火良。

內容簡介

本書基於STM32F429晶片,著重講解STM32F429的外設及其套用,力爭全面分析每個外設的功能框圖和外設的使用方法,讓讀者可以輕鬆玩轉STM32F429。全書基本上每章對應一個外設,主要內容大概分為三個部分:第一部分為簡介,第二部分為外設功能框圖分析,第三部分為代碼講解。

作者簡介

劉火良 野火STM32開發板創始人,嵌入式軟體工程師,長期從事STM32軟硬體開發,網路教程《零死角玩轉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——基本定時器 456

30.1 TIM簡介 456

30.2 基本定時器 456

30.3 基本定時器功能框圖 458

30.4 定時器初始化結構體詳解 460

30.5 基本定時器定時實驗 461

30.5.1 硬體設計 461

30.5.2 軟體設計 461

30.5.3 下載驗證 464

第31章 TIM——高級定時器 465

31.1 高級控制定時器 465

31.2 高級控制定時器功能框圖 466

31.3 輸入捕獲套用 476

31.3.1 測量脈寬或者頻率 476

31.3.2 PWM輸入模式 477

31.4 輸出比較套用 478

31.5 定時器初始化結構體詳解 480

31.6 PWM互補輸出實驗 483

31.6.1 硬體設計 484

31.6.2 軟體設計 484

31.6.3 下載驗證 488

31.7 PWM輸入捕獲實驗 489

31.7.1 硬體設計 489

31.7.2 軟體設計 489

31.7.3 下載驗證 494

第32章 TIM——電容按鍵檢測 495

32.1 電容按鍵原理 495

32.2 電容按鍵檢測實驗 496

32.2.1 硬體設計 497

32.2.2 軟體設計 497

32.2.3 下載驗證 504

第33章 SDIO——SD卡讀寫測試 505

33.1 SDIO簡介 505

33.2 SD卡物理結構 506

33.3 SDIO匯流排 507

33.3.1 匯流排拓撲 507

33.3.2 匯流排協定 508

33.3.3 命令 510

33.3.4 回響 512

33.4 SD卡的操作模式及切換 514

33.4.1 SD卡的操作模式 514

33.4.2 卡識別模式 514

33.4.3 數據傳輸模式 516

33.5 STM32的SDIO功能框圖 516

33.6 SDIO初始化結構體 521

33.7 SDIO命令初始化結構體 522

33.8 SDIO數據初始化結構體 523

33.9 SD卡讀寫測試實驗 523

33.9.1 硬體設計 524

33.9.2 軟體設計 524

33.9.3 下載驗證 549

第34章 基於SD卡的FatFs檔案系統 550

34.1 FatFs移植步驟 550

34.2 FatFs接口函式 552

34.3 FatFs功能測試 557

第35章 I2S——音頻播放與錄音輸入 561

35.1 I2S簡介 561

35.1.1 數字音頻技術 561

35.1.2 I2S匯流排接口 562

35.1.3 音頻數據傳輸協定標準 562

35.2 I2S功能框圖 565

35.3 WM8978音頻編解碼器 567

35.4 WAV格式檔案 569

35.4.1 RIFF檔案規範 570

35.4.2 WAV檔案 570

35.4.3 WAV檔案實例分析 571

35.5 I2S初始化結構體詳解 571

35.6 錄音與回放實驗 572

35.6.1 硬體設計 573

35.6.2 軟體設計 573

35.6.3 下載驗證 601

35.7 MP3播放器 601

35.7.1 MP3檔案結構 602

35.7.2 MP3解碼庫 605

35.7.3 Helix解碼庫移植 606

35.7.4 MP3播放器功能實現 606

35.7.5 下載驗證 614

第36章 ETH——LwIP乙太網通信 615

36.1 網際網路模型 615

36.2 乙太網 616

36.2.1 PHY層 616

36.2.2 MAC子層 617

36.3 TCP/IP協定棧 618

36.3.1 需要協定棧的原因 619

36.3.2 各網路層的功能 619

36.4 乙太網外設 620

36.4.1 SMI接口 621

36.4.2 MII和RMII接口 623

36.4.3 MAC數據包傳送和接收 624

36.4.4 MAC過濾 626

36.5 PHY:LAN8720A 626

36.6 LwIP:輕型TCP/IP協定棧 629

36.7 ETH初始化結構體詳解 629

36.8 乙太網通信實驗:無作業系統LwIP移植 635

36.8.1 硬體設計 635

36.8.2 移植步驟 635

36.8.3 下載驗證 661

36.9 基於μCOS-III移植LwIP實驗 663

第37章 CAN——通信實驗 680

37.1 CAN協定簡介 680

37.1.1 CAN物理層 680

37.1.2 協定層 684

37.2 STM32的CAN外設簡介 690

37.3 CAN初始化結構體 698

37.4 CAN傳送及接收結構體 700

37.5 CAN篩選器結構體 701

37.6 CAN——雙機通信實驗 703

37.6.1 硬體設計 703

37.6.2 軟體設計 704

37.6.3 下載驗證 713

第38章 RS-485通信實驗 714

38.1 RS-485通信協定簡介 714

38.2 RS-485——雙機通信實驗 715

38.2.1 硬體設計 715

38.2.2 軟體設計 716

38.2.3 下載驗證 723

第39章 電源管理——實現低功耗 724

39.1 STM32的電源管理簡介 724

39.1.1 電源監控器 724

39.1.2 STM32的電源系統 726

39.1.3 STM32的功耗模式 727

39.2 電源管理相關的庫函式及命令 729

39.2.1 配置PVD監控功能 729

39.2.2 WFI與WFE命令 729

39.2.3 進入停止模式 730

39.2.4 進入待機模式 731

39.3 PWR——睡眠模式實驗 732

39.3.1 硬體設計 732

39.3.2 軟體設計 732

39.3.3 下載驗證 735

39.4 PWR——停止模式實驗 735

39.4.1 硬體設計 735

39.4.2 軟體設計 735

39.4.3 下載驗證 739

39.5 PWR——待機模式實驗 739

39.5.1 硬體設計 740

39.5.2 軟體設計 740

39.5.3 下載驗證 743

39.6 PWR——PVD電源監控實驗 743

39.6.1 硬體設計 743

39.6.2 軟體設計 745

39.6.3 下載驗證 747

第40章 RTC——實時時鐘 748

40.1 RTC簡介 748

40.2 RTC功能框圖解析 748

40.3 RTC初始化結構體講解 751

40.4 RTC時間結構體講解 752

40.5 RTC日期結構體講解 753

40.6 RTC鬧鐘結構體講解 753

40.7 RTC—日曆實驗 754

40.7.1 硬體設計 754

40.7.2 軟體設計 754

40.7.3 下載驗證 760

40.8 RTC—鬧鐘實驗 760

40.8.1 硬體設計 760

40.8.2 軟體設計 760

40.8.3 下載驗證 765

第41章 DCMI——OV5640攝像頭 766

41.1 攝像頭簡介 766

41.1.1 數字攝像頭與模擬攝像頭的區別 766

41.1.2 CCD與CMOS的區別 767

41.2 OV5640攝像頭 767

41.2.1 OV5640感測器簡介 769

41.2.2 OV5640引腳及功能框圖 769

41.2.3 SCCB時序 771

41.2.4 OV5640的暫存器 772

41.2.5 像素數據輸出時序 773

41.3 STM32的DCMI接口簡介 773

41.3.1 DCMI整體框圖 774

41.3.2 DCMI接口內部結構 775

41.3.3 同步方式 775

41.3.4 捕獲模式及捕獲率 776

41.4 DCMI初始化結構體 776

41.5 DCMI——OV5640攝像頭實驗 777

41.5.1 硬體設計 777

41.5.2 軟體設計 779

41.5.3 下載驗證 797

第42章 MDK的編譯過程及檔案類型全解 798

42.1 編譯過程 798

42.1.1 編譯過程簡介 798

42.1.2 具體工程中的編譯過程 799

42.2 程式的組成、存儲與運行 800

42.2.1 CODE、RO、RW、ZI Data域及堆疊空間 800

42.2.2 程式的存儲與運行 801

42.3 編譯工具鏈 802

42.3.1 設定環境變數 803

42.3.2 armcc、armasm及armlink 804

42.3.3 armar、fromelf及用戶指令 807

42.4 MDK工程的檔案類型 808

42.4.1 uvprojx、uvoptx、uvguix及ini工程檔案 809

42.4.2 源檔案 811

42.4.3 Output目錄下生成的檔案 811

42.4.4 Listing目錄下的檔案 831

42.4.5 sct分散載入檔案的格式與套用 837

42.5 實驗:自動分配變數到外部SDRAM空間 846

42.5.1 硬體設計 846

42.5.2 軟體設計 847

42.5.3 下載驗證 853

42.6 實驗:優先使用內部SRAM並把堆區分配到SDRAM空間 853

42.6.1 硬體設計 854

42.6.2 軟體設計 854

42.6.3 下載驗證 864

第43章 在SRAM中調試代碼 865

43.1 在RAM中調試代碼 865

43.2 STM32的啟動方式 865

43.3 內部Flash的啟動過程 867

43.4 實驗:在內部SRAM中調試代碼 869

43.4.1 硬體設計 869

43.4.2 軟體設計 870

43.4.3 下載驗證 877

第44章 讀寫內部Flash 878

44.1 STM32的內部Flash簡介 878

44.2 對內部Flash的寫入過程 881

44.3 查看工程的空間分布 882

44.4 操作內部Flash的庫函式 884

44.5 實驗:讀寫內部Flash 887

44.5.1 硬體設計 887

44.5.2 軟體設計 887

44.5.3 下載驗證 893

第45章 設定Flash的讀防寫及解除 894

45.1 選項位元組與讀防寫 894

45.1.1 選項位元組的內容 894

45.1.2 RDP讀保護級別 896

45.1.3 PCROP代碼讀出保護 898

45.2 修改選項位元組的過程 898

45.3 操作選項位元組的庫函式 899

45.4 實驗:設定讀防寫及解除 901

45.4.1 硬體設計 902

45.4.2 軟體設計 902

45.4.3 下載驗證 908

相關詞條

相關搜尋

熱門詞條

聯絡我們