閱讀1206 返回首頁    go 魔獸


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

STM32_A
STM32_

前  言
本書的編寫風格
本書著重講解STM32F429的外設以及外設的應用,力爭全麵分析每個外設的功能框圖和使用方法,讓讀者可以零死角地玩轉STM32F429。
基本每個章節對應一個外設,每章的主要內容大概分為3個部分,第1部分為簡介,第2部分為外設功能框圖分析,第3部分為代碼講解。
外設簡介則是用作者自己的話把外設概括性地介紹一遍,力求語句簡短,通俗易懂,避免照抄數據手冊中的介紹。
外設功能框圖分析是每章的重點,該部分會詳細講解功能框圖各部分的作用,是學習STM32F429的精髓所在,掌握了整個外設的框圖則可以熟練地使用該外設,熟練地編程,日後學習其他型號的單片機也會得心應手。即使單片機的型號不同,外設的框圖基本也是一樣的。這一步的學習比較枯燥,但是必須下功夫鑽研,方能學有所成。
代碼分析則是講解使用該外設的實驗過程,主要分析代碼流程和一些編程注意事項。在掌握了框圖之後,學習代碼部分則會輕而易舉。
本書的學習方法
本書第3~11章連貫性非常強,屬於單片機底層知識的講解,對後麵章節的學習起著“千斤頂”的作用,讀者需要按照順序學習,不可跳躍閱讀。學完這部分之後,能力稍強的用戶基本可以入門STM32。其餘章節連貫性較弱,可根據項目需要選擇閱讀。另外本書配套200集手把手教學視頻和大量的PPT,觀看視頻輔助學習,效果會更佳。相關視頻請到秉火論壇下載。
本書的參考資料
本書的參考資料為《STM32F4xx中文參考手冊》和《Cortex-M4內核參考手冊》,這兩本是ST官方的手冊,屬於精華版,內容麵麵俱到,無所不包。限於篇幅問題,本書著重於STM32F429的功能框圖分析和代碼講解,有關寄存器的詳細描述則略過,在學習本書的時候,涉及寄存器描述部分還請參考上述兩本手冊,這樣學習效果會更佳。
本書的配套硬件和程序
本書配套的硬件平台為秉火STM32F429挑戰者開發板,見圖0-1。如果配合該硬件平台做實驗,必會達到事半功倍的學習效果,省去中間移植時遇到的各種問題。書中提到的配套工程程序可以在秉火論壇(www.f?irebbs.cn)下載。
本書的技術論壇
如果在學習過程中遇到問題,可以到秉火論壇(www.f?irebbs.cn)發帖交流,開源共享,共同進步。
鑒於作者水平有限,本書難免存在紕漏,熱心的讀者也可把勘誤發到論壇,以便我們改進。祝你學習愉快!M4的世界,秉火與您同行!

圖0-1 秉火STM32F429挑戰者硬件資源

圖0-1 (續)

目  錄
前 言
第1章 如何安裝KEIL5
1.1 溫馨提示

1.2 獲取KEIL5安裝包
1.3 開始安裝KEIL5
1.4 安裝STM32芯片包
第2章 如何用DAP仿真器下載程序
2.1 仿真器簡介

2.2 硬件連接
2.3 仿真器配置
2.4 選擇目標板
2.5 下載程序
第3章 初識STM32
3.1 什麼是STM32

3.2 STM32能做什麼
3.2.1 智能手環
3.2.2 微型四軸飛行器
3.2.3 淘寶眾籌

3.3 STM32選型
3.3.1 STM32分類
3.3.2 STM32命名方法
3.3.3 選擇合適的MCU

第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 下載驗證

最後更新:2017-05-24 16:32:21

  上一篇:go  演講實錄丨呂學強 當代教育的智能化趨勢
  下一篇:go  演講實錄丨朱頻頻 讓Bots無處不在