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