STM32庫(kù)開發(fā)實(shí)戰(zhàn)指南:基于STM32F4
定 價(jià):129 元
叢書名:電子與嵌入式系統(tǒng)設(shè)計(jì)叢書
- 作者:劉火良 楊森
- 出版時(shí)間:2017/2/1
- ISBN:9787111557456
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP332.302.1-62
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書的主要內(nèi)容將著重介紹STM32的庫(kù)函數(shù),以及如何使用庫(kù)的方式進(jìn)行開發(fā)。使初學(xué)者能夠快速入門能夠在此基礎(chǔ)上迅速入門,掌握STM32的開發(fā)方法。本書內(nèi)容基于ARM-CortexM3內(nèi)核的STM32F429芯片,緊緊圍繞庫(kù)展開,系統(tǒng)地講述了STM32固件庫(kù)的原理、使用方法。
前 言本書的編寫風(fēng)格本書著重講解STM32F429的外設(shè)以及外設(shè)的應(yīng)用,力爭(zhēng)全面分析每個(gè)外設(shè)的功能框圖和使用方法,讓讀者可以零死角地玩轉(zhuǎn)STM32F429。 基本每個(gè)章節(jié)對(duì)應(yīng)一個(gè)外設(shè),每章的主要內(nèi)容大概分為3個(gè)部分,第1部分為簡(jiǎn)介,第2部分為外設(shè)功能框圖分析,第3部分為代碼講解。 外設(shè)簡(jiǎn)介則是用作者自己的話把外設(shè)概括性地介紹一遍,力求語(yǔ)句簡(jiǎn)短,通俗易懂,避免照抄數(shù)據(jù)手冊(cè)中的介紹。 外設(shè)功能框圖分析是每章的重點(diǎn),該部分會(huì)詳細(xì)講解功能框圖各部分的作用,是學(xué)習(xí)STM32F429的精髓所在,掌握了整個(gè)外設(shè)的框圖則可以熟練地使用該外設(shè),熟練地編程,日后學(xué)習(xí)其他型號(hào)的單片機(jī)也會(huì)得心應(yīng)手。即使單片機(jī)的型號(hào)不同,外設(shè)的框圖基本也是一樣的。這一步的學(xué)習(xí)比較枯燥,但是必須下功夫鉆研,方能學(xué)有所成。 代碼分析則是講解使用該外設(shè)的實(shí)驗(yàn)過程,主要分析代碼流程和一些編程注意事項(xiàng)。在掌握了框圖之后,學(xué)習(xí)代碼部分則會(huì)輕而易舉。 本書的學(xué)習(xí)方法本書第3~11章連貫性非常強(qiáng),屬于單片機(jī)底層知識(shí)的講解,對(duì)后面章節(jié)的學(xué)習(xí)起著千斤頂?shù)淖饔,讀者需要按照順序?qū)W習(xí),不可跳躍閱讀。學(xué)完這部分之后,能力稍強(qiáng)的用戶基本可以入門STM32。其余章節(jié)連貫性較弱,可根據(jù)項(xiàng)目需要選擇閱讀。另外本書配套200集手把手教學(xué)視頻和大量的PPT,觀看視頻輔助學(xué)習(xí),效果會(huì)更佳。相關(guān)視頻請(qǐng)到秉火論壇下載。 本書的參考資料本書的參考資料為《STM32F4xx中文參考手冊(cè)》和《Cortex-M4內(nèi)核參考手冊(cè)》,這兩本是ST官方的手冊(cè),屬于精華版,內(nèi)容面面俱到,無(wú)所不包。限于篇幅問題,本書著重于STM32F429的功能框圖分析和代碼講解,有關(guān)寄存器的詳細(xì)描述則略過,在學(xué)習(xí)本書的時(shí)候,涉及寄存器描述部分還請(qǐng)參考上述兩本手冊(cè),這樣學(xué)習(xí)效果會(huì)更佳。 本書的配套硬件和程序本書配套的硬件平臺(tái)為秉火STM32F429挑戰(zhàn)者開發(fā)板,見圖0-1。如果配合該硬件平臺(tái)做實(shí)驗(yàn),必會(huì)達(dá)到事半功倍的學(xué)習(xí)效果,省去中間移植時(shí)遇到的各種問題。書中提到的配套工程程序可以在秉火論壇(www.f?irebbs.cn)下載。 本書的技術(shù)論壇如果在學(xué)習(xí)過程中遇到問題,可以到秉火論壇(www.f?irebbs.cn)發(fā)帖交流,開源共享,共同進(jìn)步。 鑒于作者水平有限,本書難免存在紕漏,熱心的讀者也可把勘誤發(fā)到論壇,以便我們改進(jìn)。祝你學(xué)習(xí)愉快!M4的世界,秉火與您同行!
劉火良,網(wǎng)名野火,是目前國(guó)內(nèi)大的電子工程師社區(qū)阿莫論壇的版主,也是業(yè)內(nèi)暢銷的STM32開發(fā)板供應(yīng)商野火嵌入式工作室的聯(lián)合創(chuàng)始人。野火工作室是嵌入式開發(fā)方式中庫(kù)開發(fā)方式的倡導(dǎo)者,也是針對(duì)初學(xué)者在業(yè)內(nèi)推動(dòng)學(xué)習(xí)庫(kù)開發(fā)方法的排頭兵。
目 錄前 言第1章 如何安裝KEIL5 11.1 溫馨提示 11.2 獲取KEIL5安裝包 11.3 開始安裝KEIL5 11.4 安裝STM32芯片包 3第2章 如何用DAP仿真器下載程序 62.1 仿真器簡(jiǎn)介 62.2 硬件連接 62.3 仿真器配置 62.4 選擇目標(biāo)板 92.5 下載程序 9第3章 初識(shí)STM32 103.1 什么是STM32 103.2 STM32能做什么 103.2.1 智能手環(huán) 113.2.2 微型四軸飛行器 123.2.3 淘寶眾籌 123.3 STM32選型 133.3.1 STM32分類 133.3.2 STM32命名方法 143.3.3 選擇合適的MCU 14第4章 寄存器 174.1 寄存器簡(jiǎn)介 174.2 STM32的外觀 174.3 芯片里面有什么 184.4 存儲(chǔ)器映射 214.5 寄存器映射 234.5.1 STM32的外設(shè)地址映射 234.5.2 C語(yǔ)言對(duì)寄存器的封裝 26第5章 新建工程寄存器版 315.1 新建本地工程文件夾工程 315.1.1 新建本地工程文件夾 315.1.2 新建工程 325.2 下載程序 38第6章 使用寄存器點(diǎn)亮LED 396.1 GPIO簡(jiǎn)介 396.2 GPIO框圖剖析 396.2.1 基本結(jié)構(gòu)分析 396.2.2 GPIO工作模式 426.3 實(shí)驗(yàn):使用寄存器點(diǎn)亮LED 436.3.1 硬件連接 446.3.2 啟動(dòng)文件 446.3.3 stm32f4xx.h文件 466.3.4 main文件 476.3.5 下載驗(yàn)證 51第7章 自己寫庫(kù)構(gòu)建庫(kù)函數(shù)雛形 527.1 STM32函數(shù)庫(kù)簡(jiǎn)介 527.2 采用庫(kù)來開發(fā)及學(xué)習(xí)的原因 537.3 實(shí)驗(yàn):構(gòu)建庫(kù)函數(shù)雛形 537.3.1 修改寄存器地址封裝 547.3.2 定義訪問外設(shè)的結(jié)構(gòu)體指針 557.3.3 定義初始化結(jié)構(gòu)體 597.3.4 定義引腳模式的枚舉類型 607.3.5 定義GPIO初始化函數(shù) 627.3.6 使用函數(shù)點(diǎn)亮LED 647.3.7 下載驗(yàn)證 667.3.8 總結(jié) 66第8章 初識(shí)STM32標(biāo)準(zhǔn)庫(kù) 678.1 CMSIS標(biāo)準(zhǔn)及庫(kù)層次關(guān)系 678.1.1 庫(kù)目錄、文件簡(jiǎn)介 688.1.2 各庫(kù)文件間的關(guān)系 748.2 使用幫助文檔 758.2.1 常用官方資料 758.2.2 初識(shí)庫(kù)函數(shù) 76第9章 新建工程庫(kù)函數(shù)版 789.1 新建本地工程文件夾 789.2 新建工程 799.3 配置魔術(shù)棒選項(xiàng)卡 829.4 下載器配置 859.5 選擇Flash大小 86第10章 GPIO輸出使用固件庫(kù)點(diǎn)亮LED 8810.1 硬件設(shè)計(jì) 8810.2 軟件設(shè)計(jì) 8810.2.1 編程要點(diǎn) 8910.2.2 代碼分析 8910.2.3 下載驗(yàn)證 9410.3 STM32標(biāo)準(zhǔn)庫(kù)補(bǔ)充知識(shí) 94第11章 GPIO輸入按鍵檢測(cè) 9811.1 硬件設(shè)計(jì) 9811.2 軟件設(shè)計(jì) 9911.2.1 編程要點(diǎn) 9911.2.2 代碼分析 9911.2.3 下載驗(yàn)證 102第12章 GPIO位帶操作 10312.1 位帶簡(jiǎn)介 10312.1.1 外設(shè)位帶區(qū) 10312.1.2 SRAM位帶區(qū) 10412.1.3 位帶區(qū)和位帶別名區(qū)地址轉(zhuǎn)換 10412.2 GPIO位帶操作 105第13章 啟動(dòng)文件 10813.1 啟動(dòng)文件簡(jiǎn)介 10813.2 查找ARM匯編指令 10813.3 啟動(dòng)文件代碼講解 109第14章 RCC使用HSE/HSI配置時(shí)鐘 11614.1 RCC主要作用時(shí)鐘部分 11614.2 RCC框圖剖析時(shí)鐘樹 11614.2.1 系統(tǒng)時(shí)鐘 11614.2.2 其他時(shí)鐘 12114.3 配置系統(tǒng)時(shí)鐘實(shí)驗(yàn) 12214.3.1 使用HSE 12214.3.2 使用HSI 12214.3.3 硬件設(shè)計(jì) 12314.3.4 軟件設(shè)計(jì) 12314.3.5 下載驗(yàn)證 129第15章 STM32中斷應(yīng)用概覽 13015.1 異常類型 13015.2 NVIC簡(jiǎn)介 13115.2.1 NVIC寄存器簡(jiǎn)介 13115.2.2 NVIC中斷配置固件庫(kù) 13215.3 優(yōu)先級(jí)的定義 13215.3.1 優(yōu)先級(jí)定義 13215.3.2 優(yōu)先級(jí)分組 13315.4 中斷編程 134第16章 EXTI外部中斷/事件控制器 13616.1 EXTI簡(jiǎn)介 13616.2 EXTI功能框圖 13616.3 中斷/事件線 13816.4 EXTI初始化結(jié)構(gòu)體詳解 13916.5 外部中斷控制實(shí)驗(yàn) 13916.5.1 硬件設(shè)計(jì) 14016.5.2 軟件設(shè)計(jì) 14016.5.3 下載驗(yàn)證 144第17章 SysTick系統(tǒng)定時(shí)器 14517.1 SysTick簡(jiǎn)介 14517.2 SysTick寄存器介紹 14517.3 SysTick定時(shí)實(shí)驗(yàn) 14617.3.1 硬件設(shè)計(jì) 14617.3.2 軟件設(shè)計(jì) 146第18章 通信的基本概念 15218.1 串行通信與并行通信 15218.2 全雙工、半雙工及單工通信 15318.3 同步通信與異步通信 15318.4 通信速率 154第19章 USART串口通信 15519.1 串口通信協(xié)議簡(jiǎn)介 15519.1.1 物理層 15519.1.2 協(xié)議層 15819.2 STM32的USART簡(jiǎn)介 15919.3 USART功能框圖 16019.4 USART初始化結(jié)構(gòu)體詳解 16619.5 USART1接發(fā)通信實(shí)驗(yàn) 16719.5.1 硬件設(shè)計(jì) 16819.5.2 軟件設(shè)計(jì) 16819.5.3 下載驗(yàn)證 17319.6 USART1指令控制RGB彩燈實(shí)驗(yàn) 17419.6.1 硬件設(shè)計(jì) 17419.6.2 軟件設(shè)計(jì) 17419.6.3 下載驗(yàn)證 179第20章 DMA 18020.1 DMA簡(jiǎn)介 18020.2 DMA功能框圖 18020.3 DMA數(shù)據(jù)配置 18420.4 DMA初始化結(jié)構(gòu)體詳解 18820.5 DMA存儲(chǔ)器到存儲(chǔ)器模式實(shí)驗(yàn) 19020.5.1 硬件設(shè)計(jì) 19020.5.2 軟件設(shè)計(jì) 19020.5.3 下載驗(yàn)證 19520.6 DMA存儲(chǔ)器到外設(shè)模式實(shí)驗(yàn) 19520.6.1 硬件設(shè)計(jì) 19520.6.2 軟件設(shè)計(jì) 19520.6.3 下載驗(yàn)證 199第21章 常用存儲(chǔ)器介紹 20021.1 存儲(chǔ)器種類 20021.2 RAM存儲(chǔ)器 20021.2.1 DRAM 20121.2.2 SRAM 20221.2.3 DRAM與SRAM的應(yīng)用場(chǎng)合 20221.3 非易失性存儲(chǔ)器 20221.3.1 ROM存儲(chǔ)器 20221.3.2 Flash存儲(chǔ)器 203第22章 I2C讀寫EEPROM 20522.1 I2C協(xié)議簡(jiǎn)介 20522.1.1 I2C物理層 20522.1.2 協(xié)議層 20622.2 STM32的I2C特性及架構(gòu) 20922.2.1 STM32的I2C外設(shè)簡(jiǎn)介 20922.2.2 STM32的I2C架構(gòu)剖析 21022.2.3 通信過程 21222.3 I2C初始化結(jié)構(gòu)體詳解 21322.4 I2C讀寫EEPROM實(shí)驗(yàn) 21522.4.1 硬件設(shè)計(jì) 21522.4.2 軟件設(shè)計(jì) 21622.4.3 下載驗(yàn)證 234第23章SPI讀寫串行Flash 23523.1 SPI協(xié)議簡(jiǎn)介 23523.1.1 SPI物理層 23523.1.2 協(xié)議層 23623.2 STM32的SPI特性及架構(gòu) 23823.2.1 STM32的SPI外設(shè)簡(jiǎn)介 23823.2.2 STM32的SPI架構(gòu)剖析 23923.2.3 通信過程 24123.3 SPI初始化結(jié)構(gòu)體詳解 24223.4 SPI讀寫串行Flash實(shí)驗(yàn) 24323.4.1 硬件設(shè)計(jì) 24323.4.2 軟件設(shè)計(jì) 24423.4.3 下載驗(yàn)證 264第24章串行Flash文件系統(tǒng)FatFs 26524.1 文件系統(tǒng) 26524.2 FatFs文件系統(tǒng)簡(jiǎn)介 26624.2.1 FatFs的目錄結(jié)構(gòu) 26624.2.2 FatFs幫助文檔 26624.2.3 FatFs源碼 26724.3 FatFs文件系統(tǒng)移植實(shí)驗(yàn) 26824.3.1 FatFs程序結(jié)構(gòu)圖 26824.3.2 硬件設(shè)計(jì) 26924.3.3 FatFs移植步驟 26924.3.4 FatFs底層設(shè)備驅(qū)動(dòng)函數(shù) 27124.3.5 FatFs功能配置 27624.3.6 FatFs功能測(cè)試 27724.3.7 下載驗(yàn)證 28024.4 FatFs功能使用實(shí)驗(yàn) 28124.4.1 硬件設(shè)計(jì) 28124.4.2 軟件設(shè)計(jì) 28124.4.3 下載驗(yàn)證 286第25章FMC擴(kuò)展外部SDRAM 28725.1 SDRAM控制原理 28725.1.1 SDRAM信號(hào)線 28825.1.2 控制邏輯 28925.1.3 地址控制 28925.1.4 SDRAM的存儲(chǔ)陣列 28925.1.5 數(shù)據(jù)輸入輸出 28925.1.6 SDRAM的命令 29025.1.7 SDRAM的初始化流程 29525.1.8 SDRAM的讀寫流程 29625.2 FMC簡(jiǎn)介 29725.3 FMC框圖剖析 29825.4 FMC的地址映射 30025.5 SDRAM時(shí)序結(jié)構(gòu)體 30225.6 SDRAM初始化結(jié)構(gòu)體 30325.7 SDRAM命令結(jié)構(gòu)體 30425.8 FMC擴(kuò)展外部SDRAM實(shí)驗(yàn) 30525.8.1 硬件設(shè)計(jì) 30525.8.2 軟件設(shè)計(jì) 30525.8.3 下載驗(yàn)證 316第26章LTDC/DMA2D液晶顯示 31726.1 顯示器簡(jiǎn)介 31726.1.1 液晶顯示器 31726.1.2 LED和OLED顯示器 31826.1.3 顯示器的基本參數(shù) 31926.2 液晶屏控制原理 31926.2.1 液晶面板的控制信號(hào) 32026.2.2 液晶數(shù)據(jù)傳輸時(shí)序 32126.2.3 顯存 32326.3 LTDC液晶控制器簡(jiǎn)介 32326.3.1 圖像數(shù)據(jù)混合 32326.3.2 LTDC結(jié)構(gòu)框圖剖析 32426.4 DMA2D圖形加速器簡(jiǎn)介 32726.5 LTDC初始化結(jié)構(gòu)體 32926.6 LTDC層級(jí)初始化結(jié)構(gòu)體 33126.7 DMA2D初始化結(jié)構(gòu)體 33426.8 LTDC/DMA2D液晶顯示實(shí)驗(yàn) 33626.8.1 硬件設(shè)計(jì) 33626.8.2 軟件設(shè)計(jì) 33826.8.3 下載驗(yàn)證 358第27章LTDC液晶顯示中英文 35927.1 字符編碼 35927.1.1 ASCII編碼 35927.1.2 中文編碼 36227.1.3 Unicode字符集和編碼 36527.1.4 UTF-32 36527.1.5 UTF-16 36527.1.6 UTF-8 36627.1.7 BOM 36727.2 字模簡(jiǎn)介 36727.2.1 字模的構(gòu)成 36827.2.2 字模顯示原理 36827.2.3 如何制作字模 37027.2.4 字模尋址公式 37127.2.5 存儲(chǔ)字模文件 37227.3 LTDC各種模式的液晶顯示字符實(shí)驗(yàn) 37227.3.1 硬件設(shè)計(jì) 37327.3.2 顯示ASCII編碼的字符 37327.3.3 顯示GB2312編碼的字符 38227.3.4 顯示任意大小的字符 39127.3.5 下載驗(yàn)證 398第28章電容觸摸屏觸摸畫板 39928.1 觸摸屏簡(jiǎn)介 39928.1.1 電阻觸摸屏檢測(cè)原理 39928.1.2 電容觸摸屏檢測(cè)原理 40128.2 電容觸摸屏控制芯片 40228.2.1 GT9157芯片的引腳 40328.2.2 上電時(shí)序與I2C設(shè)備地址 40428.2.3 寄存器配置 40428.2.4 讀取坐標(biāo)信息 40628.3 電容觸摸屏觸摸畫板實(shí)驗(yàn) 40828.3.1 硬件設(shè)計(jì) 40828.3.2 軟件設(shè)計(jì) 40928.3.3 下載驗(yàn)證 430第29章ADC電壓采集 43129.1 ADC簡(jiǎn)介 43129.2 ADC功能框圖剖析 43129.2.1 ADC功能 43129.2.2 電壓轉(zhuǎn)換 43729.3 ADC初始化結(jié)構(gòu)體詳解 43729.4 獨(dú)立模式單通道采集實(shí)驗(yàn) 43829.4.1 硬件設(shè)計(jì) 43929.4.2 軟件設(shè)計(jì) 43929.4.3 下載驗(yàn)證 44329.5 獨(dú)立模式多通道采集實(shí)驗(yàn) 44329.5.1 硬件設(shè)計(jì) 44329.5.2 軟件設(shè)計(jì) 44329.5.3 下載驗(yàn)證 44929.6 三重ADC交替模式采集實(shí)驗(yàn) 44929.6.1 硬件設(shè)計(jì) 44929.6.2 軟件設(shè)計(jì) 45029.6.3 下載驗(yàn)證 455第30章TIM基