本書涵蓋了基于ARM的STM32系統(tǒng)的基本概念、基本原理、應(yīng)用技術(shù)。硬件原理的闡述以"夠用、適用、易學(xué)”為原則,降低讀者入門和理解的難度。STM32的軟件設(shè)計(jì)基于固件庫(kù),方便讀者上手。 本書在內(nèi)容組織和框架設(shè)計(jì)上具有兩個(gè)鮮明特點(diǎn):全案例、基于讀者學(xué)習(xí)。從讀者學(xué)習(xí)的角度,組織每個(gè)章節(jié)的內(nèi)容體系,對(duì)STM32常用的典型外設(shè)模塊的原理及其應(yīng)用設(shè)計(jì)均以若干個(gè)完整案例呈現(xiàn),同時(shí)也給出了一個(gè)完整的綜合性工程案例,這些都十分有利于學(xué)習(xí)者學(xué)習(xí)和模仿。 本書可作為計(jì)算機(jī)、電子、通信、機(jī)電、自動(dòng)化及其相關(guān)專業(yè)的本、?茖W(xué)生及研究生的教材,也可作為從事檢測(cè)、自動(dòng)控制等領(lǐng)域工作的嵌入式系統(tǒng)開(kāi)發(fā)的工程技術(shù)人員的參考用書。
沈紅衛(wèi),歷任紹興文理學(xué)院自動(dòng)化系副教授,紹興文理學(xué)院教務(wù)處處長(zhǎng)(教授),現(xiàn)任紹興文理學(xué)院工學(xué)院院長(zhǎng)。主要著作有《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析》、《基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》等。
第1章 如何學(xué)習(xí)STM32 (1)
1.1 學(xué)習(xí)STM32必須具備的知識(shí)基礎(chǔ) (1)
1.2 STM32的基本架構(gòu)和基本原理 (2)
1.2.1 什么是ARM (2)
1.2.2 什么是STM32 (3)
1.2.3 STM32的內(nèi)部結(jié)構(gòu) (3)
1.2.4 典型型號(hào)―STM32F103ZET6 (5)
1.2.5 STM32的時(shí)鐘樹 (5)
1.3 學(xué)習(xí)STM32的最好方法是什么 (9)
1.4 學(xué)習(xí)STM32需要哪些工具或平臺(tái) (9)
1.4.1 硬件平臺(tái) (10)
1.4.2 軟件平臺(tái) (11)
1.5 STM32程序開(kāi)發(fā)的模式 (12)
1.5.1 基于寄存器的開(kāi)發(fā)模式 (13)
1.5.2 基于ST固件庫(kù)的開(kāi)發(fā)模式 (20)
1.5.3 基于操作系統(tǒng)的開(kāi)發(fā)模式 (26)
1.5.4 三種編程模式的選用建議 (27)
思考題 (27)
第2章 如何調(diào)試STM32 (28)
2.1 STM32單片機(jī)的最小系統(tǒng) (28)
2.2 STM32工程模板的建立 (30)
2.2.1 STM32的固件庫(kù)(Standard Peripherals Library) (30)
2.2.2 新建工程模板第一步―拷貝固件庫(kù)文件 (34)
2.2.3 新建工程模板第二步―新建一個(gè)KEIL工程 (35)
2.2.4 關(guān)于創(chuàng)建工程模板的簡(jiǎn)單小結(jié) (41)
2.3 程序的燒寫 (42)
2.3.1 基于串口的程序下載(燒寫)方式 (42)
2.3.2 基于JTAG(SWD)的程序下載(燒寫)方式 (44)
2.4 程序的調(diào)試 (46)
2.5 模板的使用 (48)
2.6 三個(gè)GPIO輸出的范例―STM32中實(shí)現(xiàn) 延時(shí)的三種常用方法 (48)
2.6.1 我的第一個(gè)LED工程―基于延時(shí)函數(shù)的延時(shí) (48)
2.6.2 我的第二個(gè)LED工程―SysTick中斷延時(shí) (50)
2.6.3 我的第3個(gè)工程―定時(shí)器中斷延時(shí) (52)
2.7 GPIO口的各種輸出方式及其應(yīng)用 (55)
2.7.1 功能要求 (55)
2.7.2 程序?qū)崿F(xiàn) (56)
2.8 本章小結(jié) (58)
思考題 (59)
第3章 GPIO及其應(yīng)用―輸入 (60)
3.1 單功能按鍵輸入 (60)
3.1.1 實(shí)現(xiàn)思想 (60)
3.1.2 具體程序 (61)
3.2 復(fù)用功能按鍵輸入 (64)
3.2.1 按鍵復(fù)用的基本概念 (64)
3.2.2 程序?qū)崿F(xiàn)舉例 (64)
3.3 非按鍵類開(kāi)關(guān)信號(hào)輸入及其實(shí)現(xiàn) (67)
3.3.1 GPIO的輸入方式及其特點(diǎn) (67)
3.3.2 程序?qū)崿F(xiàn) (68)
3.4 GPIO輸入輸出小結(jié) (69)
思考題 (70)
第4章 TIMER與PWM (71)
4.1 關(guān)于STM32的定時(shí)器概述 (71)
4.2 STM32定時(shí)器的簡(jiǎn)單應(yīng)用 (72)
4.2.1 按周期輸出方波的例子 (72)
4.2.2 實(shí)現(xiàn)原理 (72)
4.2.3 具體程序 (72)
4.3 STM32定時(shí)器的復(fù)雜應(yīng)用―檢測(cè)輸入方波的頻率 (77)
4.3.1 STM32定時(shí)器的其他特性 (77)
4.3.2 本例設(shè)計(jì)要求 (78)
4.3.3 硬件接口設(shè)計(jì)與測(cè)量原理 (79)
4.3.4 具體程序 (79)
4.4 PWM原理及其應(yīng)用一―一個(gè)LED呼吸燈的實(shí)現(xiàn) (84)
4.4.1 PWM的基本概念及其基本應(yīng)用 (84)
4.4.2 STM32的PWM的實(shí)現(xiàn)原理 (84)
4.4.3 基于PWM的LED呼吸燈的實(shí)現(xiàn)思路 (88)
4.4.4 呼吸燈的實(shí)現(xiàn)程序 (89)
4.5 PWM原理及其應(yīng)用二―通過(guò)L298N控制電機(jī)轉(zhuǎn)速 (96)
4.5.1 硬件設(shè)計(jì) (96)
4.5.2 直流電機(jī)調(diào)速與調(diào)向的原理 (97)
4.5.3 程序?qū)崿F(xiàn) (97)
思考題 (104)
第5章 USART及其應(yīng)用 (105)
5.1 串行通信模塊USART的基本應(yīng)用要點(diǎn) (105)
5.1.1 STM32的USART及其基本特性 (105)
5.1.2 STM32的USART應(yīng)用的基本要領(lǐng) (106)
5.2 一個(gè)USART的通信實(shí)現(xiàn)(STM32與PC)―查詢法 (107)
5.2.1 功能要求 (107)
5.2.2 實(shí)現(xiàn)難點(diǎn) (108)
5.2.3 程序?qū)崿F(xiàn) (108)
5.2.4 USART應(yīng)用的有關(guān)事項(xiàng) (114)
5.3 一個(gè)USART的通信實(shí)現(xiàn)(STM32與PC)―中斷法 (115)
5.3.1 功能要求及通信協(xié)議設(shè)計(jì) (115)
5.3.2 程序算法 (115)
5.3.3 本例的源程序 (116)
5.4 兩個(gè)USART的通信實(shí)現(xiàn) (124)
5.4.1 功能要求與通信協(xié)議 (124)
5.4.2 接口設(shè)計(jì) (124)
5.4.3 程序?qū)崿F(xiàn) (125)
5.5 USART應(yīng)用小結(jié) (139)
思考題 (141)
第6章 人機(jī)界面―按鍵輸入與液晶顯示 (142)
6.1 STM32與液晶模塊12864的接口實(shí)現(xiàn) (142)
6.1.1 STM32與液晶模塊12864的接口實(shí)現(xiàn)―延時(shí)法 (142)
6.1.2 STM32與液晶模塊12864的接口實(shí)現(xiàn)―查詢“忙”狀態(tài) (153)
6.2 基于液晶模塊12864的菜單實(shí)現(xiàn) (173)
6.2.1 程序中菜單的種類與菜單化程序的優(yōu)勢(shì) (173)
6.2.2 基于液晶模塊12864的菜單實(shí)現(xiàn)實(shí)例 (173)
6.3 矩陣鍵盤的接口實(shí)現(xiàn) (186)
6.3.1 矩陣鍵盤的應(yīng)用與程序設(shè)計(jì)思想 (186)
6.3.2 4×4矩陣鍵盤的硬件設(shè)計(jì) (186)
6.3.3 演示程序 (187)
6.4 本章小結(jié) (198)
思考題 (199)
第7章 同步串行接口總線SPI與I2C (200)
7.1 STM32的SPI (200)
7.1.1 SPI概述 (200)
7.1.2 STM32之SPI總線的應(yīng)用要點(diǎn) (201)
7.2 SPI的接口應(yīng)用及其實(shí)現(xiàn) (202)
7.2.1 STM32與OLED12864液晶模塊的SPI接口 (202)
7.2.2 STM32的SPI1與OLED12864的接口程序 (203)
7.3 STM32的I2C總線 (223)
7.3.1 I2C總線的基本概念 (223)
7.3.2 STM32的I2C總線應(yīng)用要領(lǐng) (226)
7.4 STM32的I2C總線的應(yīng)用舉例 (227)
7.4.1 具有I2C接口的DS3231時(shí)鐘模塊 (227)
7.4.2 STM32與DS3231時(shí)鐘模塊的硬件接口 (229)
7.4.3 STM32與DS3231的軟件接口及其演示實(shí)例 (229)
7.5 I2C總線穩(wěn)健性設(shè)計(jì) (247)
思考題 (247)
第8章 ADC、DAC與DMA及其應(yīng)用 (248)
8.1 STM32的DMA (248)
8.1.1 STM32的DMA及其基本特性 (248)
8.1.2 STM32的DMA原理及其配置要點(diǎn) (249)
8.2 STM32的ADC (251)
8.2.1 STM32的ADC的基本特性 (251)
8.2.2 STM32的ADC的程序流程與編程要點(diǎn) (253)
8.3 一個(gè)三通道A/D轉(zhuǎn)換的范例 (254)
8.3.1 功能要求與方案設(shè)計(jì) (254)
8.3.2 實(shí)現(xiàn)程序 (256)
8.3.3 本例的中斷法實(shí)現(xiàn) (263)
8.4 STM32的DAC (266)
8.4.1 DAC概述 (266)
8.4.2 DAC的配置要領(lǐng) (266)
8.4.3 DAC應(yīng)用實(shí)例 (268)
思考題 (277)
第9章 工程實(shí)例―基于線性CCD的小車循跡系統(tǒng) (278)
9.1 系統(tǒng)要求 (278)
9.2 線性CCD的原理及其使用 (278)
9.2.1 線性CCD傳感器原理 (279)
9.2.2 線性CCD傳感器應(yīng)用 (280)
9.2.3 硬件接口 (281)
9.3 自適應(yīng)曝光的算法設(shè)計(jì) (281)
9.3.1 自適應(yīng)曝光算法 (281)
9.3.2 模塊化架構(gòu) (283)
9.4 具體程序 (285)
9.4.1 工程文件視圖―文件結(jié)構(gòu) (285)
9.4.2 程序源代碼 (286)
9.5 系統(tǒng)性能實(shí)測(cè) (315)
9.5.1 系統(tǒng)實(shí)物與測(cè)試環(huán)境 (315)
9.5.2 系統(tǒng)實(shí)測(cè)結(jié)果 (316)
思考題 (318)
參考文獻(xiàn) (319)