天天看點

《STM32庫開發實戰指南:基于STM32F4》----導讀

《STM32庫開發實戰指南:基于STM32F4》----導讀
《STM32庫開發實戰指南:基于STM32F4》----導讀

目 錄

前 言

[第1章 如何安裝keil5

<a href="https://yq.aliyun.com/articles/89566/">1.2 擷取keil5安裝包</a>

<a href="https://yq.aliyun.com/articles/89578/">1.3 開始安裝keil5</a>

<a href="https://yq.aliyun.com/articles/89586/">1.4 安裝stm32晶片包</a>

[第2章 如何用dap仿真器下載下傳程式

<a href="https://yq.aliyun.com/articles/89594/">2.2 硬體連接配接</a>

<a href="https://yq.aliyun.com/articles/89601/">2.3 仿真器配置</a>

<a href="https://yq.aliyun.com/articles/89603/">2.4 選擇目标闆</a>

<a href="https://yq.aliyun.com/articles/89607">2.5 下載下傳程式</a>

[第3章 初識stm32

[3.2 stm32能做什麼

3.2.1 智能手環

3.2.2 微型四軸飛行器

[3.3 stm32選型

3.3.1 stm32分類

3.3.2 stm32命名方法

第4章 寄存器

4.1 寄存器簡介

4.2 stm32的外觀

4.3 晶片裡面有什麼

4.4 存儲器映射

4.5 寄存器映射

4.5.1 stm32的外設位址映射

4.5.2 c語言對寄存器的封裝

第5章 建立工程——寄存器版

5.1 建立本地工程檔案夾工程

5.1.1 建立本地工程檔案夾

5.1.2 建立工程

5.2 下載下傳程式

第6章 使用寄存器點亮led

6.1 gpio簡介

6.2 gpio框圖剖析

6.2.1 基本結構分析

6.2.2 gpio工作模式

6.3 實驗:使用寄存器點亮led

6.3.1 硬體連接配接

6.3.2 啟動檔案

6.3.3 stm32f4xx.h檔案

6.3.4 main檔案

6.3.5 下載下傳驗證

第7章 自己寫庫——建構庫函數雛形

7.1 stm32函數庫簡介

7.2 采用庫來開發及學習的原因

7.3 實驗:建構庫函數雛形

7.3.1 修改寄存器位址封裝

7.3.2 定義通路外設的結構體指針

7.3.3 定義初始化結構體

7.3.4 定義引腳模式的枚舉類型

7.3.5 定義gpio初始化函數

7.3.6 使用函數點亮led

7.3.7 下載下傳驗證

7.3.8 總結

第8章 初識stm32标準庫

8.1 cmsis标準及庫層次關系

8.1.1 庫目錄、檔案簡介

8.1.2 各庫檔案間的關系

8.2 使用幫助文檔

8.2.1 常用官方資料

8.2.2 初識庫函數

第9章 建立工程——庫函數版

9.1 建立本地工程檔案夾

9.2 建立工程

9.3 配置魔術棒頁籤

9.4 下載下傳器配置

9.5 選擇flash大小

第10章 gpio輸出——使用固件庫點亮led

10.1 硬體設計

10.2 軟體設計

10.2.1 程式設計要點

10.2.2 代碼分析

10.2.3 下載下傳驗證

10.3 stm32标準庫補充知識

第11章 gpio輸入——按鍵檢測

11.1 硬體設計

11.2 軟體設計

11.2.1 程式設計要點

11.2.2 代碼分析

11.2.3 下載下傳驗證

第12章 gpio——位帶操作

12.1 位帶簡介

12.1.1 外設位帶區

12.1.2 sram位帶區

12.1.3 位帶區和位帶别名區位址轉換

12.2 gpio位帶操作

第13章 啟動檔案

13.1 啟動檔案簡介

13.2 查找arm彙編指令

13.3 啟動檔案代碼講解

第14章 rcc——使用hse/hsi配置時鐘

14.1 rcc主要作用——時鐘部分

14.2 rcc框圖剖析——時鐘樹

14.2.1 系統時鐘

14.2.2 其他時鐘

14.3 配置系統時鐘實驗

14.3.1 使用hse

14.3.2 使用hsi

14.3.3 硬體設計

14.3.4 軟體設計

14.3.5 下載下傳驗證

第15章 stm32中斷應用概覽

15.1 異常類型

15.2 nvic簡介

15.2.1 nvic寄存器簡介

15.2.2 nvic中斷配置固件庫

15.3 優先級的定義

15.3.1 優先級定義

15.3.2 優先級分組

15.4 中斷程式設計

第16章 exti——外部中斷/事件控制器

16.1 exti簡介

16.2 exti功能框圖

16.3 中斷/事件線

16.4 exti初始化結構體詳解

16.5 外部中斷控制實驗

16.5.1 硬體設計

16.5.2 軟體設計

16.5.3 下載下傳驗證

第17章 systick——系統定時器

17.1 systick簡介

17.2 systick寄存器介紹

17.3 systick定時實驗

17.3.1 硬體設計

17.3.2 軟體設計

第18章 通信的基本概念

18.1 串行通信與并行通信

18.2 全雙工、半雙工及單工通信

18.3 同步通信與異步通信

18.4 通信速率

第19章 usart——序列槽通信

19.1 序列槽通信協定簡介

19.1.1 實體層

19.1.2 協定層

19.2 stm32的usart簡介

19.3 usart功能框圖

19.4 usart初始化結構體詳解

19.5 usart1接發通信實驗

19.5.1 硬體設計

19.5.2 軟體設計

19.5.3 下載下傳驗證

19.6 usart1指令控制rgb彩燈實驗

19.6.1 硬體設計

19.6.2 軟體設計

19.6.3 下載下傳驗證

第20章 dma

20.1 dma簡介

20.2 dma功能框圖

20.3 dma資料配置

20.4 dma初始化結構體詳解

20.5 dma存儲器到存儲器模式實驗

20.5.1 硬體設計

20.5.2 軟體設計

20.5.3 下載下傳驗證

20.6 dma存儲器到外設模式實驗

20.6.1 硬體設計

20.6.2 軟體設計

20.6.3 下載下傳驗證

第21章 常用存儲器介紹

21.1 存儲器種類

21.2 ram存儲器

21.2.1 dram

21.2.2 sram

21.2.3 dram與sram的應用場合

21.3 非易失性存儲器

21.3.1 rom存儲器

21.3.2 flash存儲器

第22章 i2c——讀寫eeprom

22.1 i2c協定簡介

22.1.1 i2c實體層

22.1.2 協定層

22.2 stm32的i2c特性及架構

22.2.1 stm32的i2c外設簡介

22.2.2 stm32的i2c架構剖析

22.2.3 通信過程

22.3 i2c初始化結構體詳解

22.4 i2c——讀寫eeprom實驗

22.4.1 硬體設計

22.4.2 軟體設計

22.4.3 下載下傳驗證

第23章 spi——讀寫串行flash

23.1 spi協定簡介

23.1.1 spi實體層

23.1.2 協定層

23.2 stm32的spi特性及架構

23.2.1 stm32的spi外設簡介

23.2.2 stm32的spi架構剖析

23.2.3 通信過程

23.3 spi初始化結構體詳解

23.4 spi——讀寫串行flash實驗

23.4.1 硬體設計

23.4.2 軟體設計

23.4.3 下載下傳驗證

第24章 串行flash檔案系統fatfs

24.1 檔案系統

24.2 fatfs檔案系統簡介

24.2.1 fatfs的目錄結構

24.2.2 fatfs幫助文檔

24.2.3 fatfs源碼

24.3 fatfs檔案系統移植實驗

24.3.1 fatfs程式結構圖

24.3.2 硬體設計

24.3.3 fatfs移植步驟

24.3.4 fatfs底層裝置驅動函數

24.3.5 fatfs功能配置

24.3.6 fatfs功能測試

24.3.7 下載下傳驗證

24.4 fatfs功能使用實驗

24.4.1 硬體設計

24.4.2 軟體設計

24.4.3 下載下傳驗證

第25章 fmc——擴充外部sdram

25.1 sdram控制原理

25.1.1 sdram信号線

25.1.2 控制邏輯

25.1.3 位址控制

25.1.4 sdram的存儲陣列

25.1.5 資料輸入輸出

25.1.6 sdram的指令

25.1.7 sdram的初始化流程

25.1.8 sdram的讀寫流程

25.2 fmc簡介

25.3 fmc框圖剖析

25.4 fmc的位址映射

25.5 sdram時序結構體

25.6 sdram初始化結構體

25.7 sdram指令結構體

25.8 fmc——擴充外部sdram實驗

25.8.1 硬體設計

25.8.2 軟體設計

25.8.3 下載下傳驗證

第26章 ltdc/dma2d——液晶顯示

26.1 顯示器簡介

26.1.1 液晶顯示器

26.1.2 led和oled顯示器

26.1.3 顯示器的基本參數

26.2 液晶屏控制原理

26.2.1 液晶面闆的控制信号

26.2.2 液晶資料傳輸時序

26.2.3 顯存

26.3 ltdc液晶控制器簡介

26.3.1 圖像資料混合

26.3.2 ltdc結構框圖剖析

26.4 dma2d圖形加速器簡介

26.5 ltdc初始化結構體

26.6 ltdc層級初始化結構體

26.7 dma2d初始化結構體

26.8 ltdc/dma2d——液晶顯示實驗

26.8.1 硬體設計

26.8.2 軟體設計

26.8.3 下載下傳驗證

第27章 ltdc——液晶顯示中英文

27.1 字元編碼

27.1.1 ascii編碼

27.1.2 中文編碼

27.1.3 unicode字元集和編碼

27.1.4 utf-32

27.1.5 utf-16

27.1.6 utf-8

27.1.7 bom

27.2 字模簡介

27.2.1 字模的構成

27.2.2 字模顯示原理

27.2.3 如何制作字模

27.2.4 字模尋址公式

27.2.5 存儲字模檔案

27.3 ltdc——各種模式的液晶顯示字元實驗

27.3.1 硬體設計

27.3.2 顯示ascii編碼的字元

27.3.3 顯示gb2312編碼的字元

27.3.4 顯示任意大小的字元

27.3.5 下載下傳驗證

第28章 電容觸摸屏——觸摸畫闆

28.1 觸摸屏簡介

28.1.1 電阻觸摸屏檢測原理

28.1.2 電容觸摸屏檢測原理

28.2 電容觸摸屏控制晶片

28.2.1 gt9157晶片的引腳

28.2.2 上電時序與i2c裝置位址

28.2.3 寄存器配置

28.2.4 讀取坐标資訊

28.3 電容觸摸屏——觸摸畫闆實驗

28.3.1 硬體設計

28.3.2 軟體設計

28.3.3 下載下傳驗證

第29章 adc——電壓采集

29.1 adc簡介

29.2 adc功能框圖剖析

29.2.1 adc功能

29.2.2 電壓轉換

29.3 adc初始化結構體詳解

29.4 獨立模式單通道采集實驗

29.4.1 硬體設計

29.4.2 軟體設計

29.4.3 下載下傳驗證

29.5 獨立模式多通道采集實驗

29.5.1 硬體設計

29.5.2 軟體設計

29.5.3 下載下傳驗證

29.6 三重adc交替模式采集實驗

29.6.1 硬體設計

29.6.2 軟體設計

29.6.3 下載下傳驗證

第30章 tim——基本定時器

30.1 tim簡介

30.2 基本定時器

30.3 基本定時器功能框圖

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

30.5 基本定時器定時實驗

30.5.1 硬體設計

30.5.2 軟體設計

30.5.3 下載下傳驗證

第31章 tim——進階定時器

31.1 進階控制定時器

31.2 進階控制定時器功能框圖

31.3 輸入捕獲應用

31.3.1 測量脈寬或者頻率

31.3.2 pwm輸入模式

31.4 輸出比較應用

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

31.6 pwm互補輸出實驗

31.6.1 硬體設計

31.6.2 軟體設計

31.6.3 下載下傳驗證

31.7 pwm輸入捕獲實驗

31.7.1 硬體設計

31.7.2 軟體設計

31.7.3 下載下傳驗證

第32章 tim——電容按鍵檢測

32.1 電容按鍵原理

32.2 電容按鍵檢測實驗

32.2.1 硬體設計

32.2.2 軟體設計

32.2.3 下載下傳驗證

第33章 sdio——sd卡讀寫測試

33.1 sdio簡介

33.2 sd卡實體結構

33.3 sdio總線

33.3.1 總線拓撲

33.3.2 總線協定

33.3.3 指令

33.3.4 響應

33.4 sd卡的操作模式及切換

33.4.1 sd卡的操作模式

33.4.2 卡識别模式

33.4.3 資料傳輸模式

33.5 stm32的sdio功能框圖

33.6 sdio初始化結構體

33.7 sdio指令初始化結構體

33.8 sdio資料初始化結構體

33.9 sd卡讀寫測試實驗

33.9.1 硬體設計

33.9.2 軟體設計

33.9.3 下載下傳驗證

第34章 基于sd卡的fatfs檔案系統

34.1 fatfs移植步驟

34.2 fatfs接口函數

34.3 fatfs功能測試

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

35.1 i2s簡介

35.1.1 數字音頻技術

35.1.2 i2s總線接口

35.1.3 音頻資料傳輸協定标準

35.2 i2s功能框圖

35.3 wm8978音頻編譯碼器

35.4 wav格式檔案

35.4.1 riff檔案規範

35.4.2 wav檔案

35.4.3 wav檔案執行個體分析

35.5 i2s初始化結構體詳解

35.6 錄音與回放實驗

35.6.1 硬體設計

35.6.2 軟體設計

35.6.3 下載下傳驗證

35.7 mp3播放器

35.7.1 mp3檔案結構

35.7.2 mp3解碼庫

35.7.3 helix解碼庫移植

35.7.4 mp3播放器功能實作

35.7.5 下載下傳驗證

第36章 eth——lwip以太網通信

36.1 網際網路模型

36.2 以太網

36.2.1 phy層

36.2.2 mac子層

36.3 tcp/ip協定棧

36.3.1 需要協定棧的原因

36.3.2 各網絡層的功能

36.4 以太網外設

36.4.1 smi接口

36.4.2 mii和rmii接口

36.4.3 mac資料包發送和接收

36.4.4 mac過濾

36.5 phy:lan8720a

36.6 lwip:輕型tcp/ip協定棧

36.7 eth初始化結構體詳解

36.8 以太網通信實驗:無作業系統lwip移植

36.8.1 硬體設計

36.8.2 移植步驟

36.8.3 下載下傳驗證

36.9 基于μcos-iii移植lwip實驗

第37章 can——通信實驗

37.1 can協定簡介

37.1.1 can實體層

37.1.2 協定層

37.2 stm32的can外設簡介

37.3 can初始化結構體

37.4 can發送及接收結構體

37.5 can篩選器結構體

37.6 can——雙機通信實驗

37.6.1 硬體設計

37.6.2 軟體設計

37.6.3 下載下傳驗證

第38章 rs-485通信實驗

38.1 rs-485通信協定簡介

38.2 rs-485——雙機通信實驗

38.2.1 硬體設計

38.2.2 軟體設計

38.2.3 下載下傳驗證

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

39.1 stm32的電源管理簡介

39.1.1 電源監控器

39.1.2 stm32的電源系統

39.1.3 stm32的功耗模式

39.2 電源管理相關的庫函數及指令

39.2.1 配置pvd監控功能

39.2.2 wfi與wfe指令

39.2.3 進入停止模式

39.2.4 進入待機模式

39.3 pwr——睡眠模式實驗

39.3.1 硬體設計

39.3.2 軟體設計

39.3.3 下載下傳驗證

39.4 pwr——停止模式實驗

39.4.1 硬體設計

39.4.2 軟體設計

39.4.3 下載下傳驗證

39.5 pwr——待機模式實驗

39.5.1 硬體設計

39.5.2 軟體設計

39.5.3 下載下傳驗證

39.6 pwr——pvd電源監控實驗

39.6.1 硬體設計

39.6.2 軟體設計

39.6.3 下載下傳驗證

第40章 rtc——實時時鐘

40.1 rtc簡介

40.2 rtc功能框圖解析

40.3 rtc初始化結構體講解

40.4 rtc時間結構體講解

40.5 rtc日期結構體講解

40.6 rtc鬧鐘結構體講解

40.7 rtc—月曆實驗

40.7.1 硬體設計

40.7.2 軟體設計

40.7.3 下載下傳驗證

40.8 rtc—鬧鐘實驗

40.8.1 硬體設計

40.8.2 軟體設計

40.8.3 下載下傳驗證

第41章 dcmi——ov5640攝像頭

41.1 攝像頭簡介

41.1.1 數字攝像頭與模拟攝像頭的差別

41.1.2 ccd與cmos的差別

41.2 ov5640攝像頭

41.2.1 ov5640傳感器簡介

41.2.2 ov5640引腳及功能框圖

41.2.3 sccb時序

41.2.4 ov5640的寄存器

41.2.5 像素資料輸出時序

41.3 stm32的dcmi接口簡介

41.3.1 dcmi整體框圖

41.3.2 dcmi接口内部結構

41.3.3 同步方式

41.3.4 捕獲模式及捕獲率

41.4 dcmi初始化結構體

41.5 dcmi——ov5640攝像頭實驗

41.5.1 硬體設計

41.5.2 軟體設計

41.5.3 下載下傳驗證

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

42.1 編譯過程

42.1.1 編譯過程簡介

42.1.2 具體工程中的編譯過程

42.2 程式的組成、存儲與運作

42.2.1 code、ro、rw、zi data域及堆棧空間

42.2.2 程式的存儲與運作

42.3 編譯工具鍊

42.3.1 設定環境變量

42.3.2 armcc、armasm及armlink

42.3.3 armar、fromelf及使用者指令

42.4 mdk工程的檔案類型

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

42.4.2 源檔案

42.4.3 output目錄下生成的檔案

42.4.4 listing目錄下的檔案

42.4.5 sct分散加載檔案的格式與應用

42.5 實驗:自動配置設定變量到外部sdram空間

42.5.1 硬體設計

42.5.2 軟體設計

42.5.3 下載下傳驗證

42.6 實驗:優先使用内部sram并把堆區配置設定到sdram空間

42.6.1 硬體設計

42.6.2 軟體設計

42.6.3 下載下傳驗證

第43章 在sram中調試代碼

43.1 在ram中調試代碼

43.2 stm32的啟動方式

43.3 内部flash的啟動過程

43.4 實驗:在内部sram中調試代碼

43.4.1 硬體設計

43.4.2 軟體設計

43.4.3 下載下傳驗證

第44章 讀寫内部flash

44.1 stm32的内部flash簡介

44.2 對内部flash的寫入過程

44.3 檢視工程的空間分布

44.4 操作内部flash的庫函數

44.5 實驗:讀寫内部flash

44.5.1 硬體設計

44.5.2 軟體設計

44.5.3 下載下傳驗證

第45章 設定flash的讀寫保護及解除

45.1 選項位元組與讀寫保護

45.1.1 選項位元組的内容

45.1.2 rdp讀保護級别

45.1.3 pcrop代碼讀出保護

45.2 修改選項位元組的過程

45.3 操作選項位元組的庫函數

45.4 實驗:設定讀寫保護及解除

45.4.1 硬體設計

45.4.2 軟體設計

45.4.3 下載下傳驗證