STM32單片機應用與全案例實踐( 簡體 字) | |
作者:沈紅衛 等 | 類別:1. -> 電腦組織與體系結構 -> 單晶片 -> STM32 |
出版社:電子工業出版社 | 3dWoo書號: 47092 詢問書籍請說出此書號! 有庫存 NT售價: 295 元 |
出版日:6/1/2017 | |
頁數:336 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121316203 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 如何學習STM32 (1)
1.1 學習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的時鐘樹 (5) 1.3 學習STM32的最好方法是什么 (9) 1.4 學習STM32需要哪些工具或平臺 (9) 1.4.1 硬件平臺 (10) 1.4.2 軟件平臺 (11) 1.5 STM32程序開發的模式 (12) 1.5.1 基于寄存器的開發模式 (13) 1.5.2 基于ST固件庫的開發模式 (20) 1.5.3 基于操作系統的開發模式 (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 新建工程模板第二步—新建一個KEIL工程 (35) 2.2.4 關于創建工程模板的簡單小結 (41) 2.3 程序的燒寫 (42) 2.3.1 基于串口的程序下載(燒寫)方式 (42) 2.3.2 基于JTAG(SWD)的程序下載(燒寫)方式 (44) 2.4 程序的調試 (46) 2.5 模板的使用 (48) 2.6 三個GPIO輸出的范例—STM32中實現 延時的三種常用方法 (48) 2.6.1 我的第一個LED工程—基于延時函數的延時 (48) 2.6.2 我的第二個LED工程—SysTick中斷延時 (50) 2.6.3 我的第3個工程—定時器中斷延時 (52) 2.7 GPIO口的各種輸出方式及其應用 (55) 2.7.1 功能要求 (55) 2.7.2 程序實現 (56) 2.8 本章小結 (58) 思考題 (59) 第3章 GPIO及其應用—輸入 (60) 3.1 單功能按鍵輸入 (60) 3.1.1 實現思想 (60) 3.1.2 具體程序 (61) 3.2 復用功能按鍵輸入 (64) 3.2.1 按鍵復用的基本概念 (64) 3.2.2 程序實現舉例 (64) 3.3 非按鍵類開關信號輸入及其實現 (67) 3.3.1 GPIO的輸入方式及其特點 (67) 3.3.2 程序實現 (68) 3.4 GPIO輸入輸出小結 (69) 思考題 (70) 第4章 TIMER與PWM (71) 4.1 關于STM32的定時器概述 (71) 4.2 STM32定時器的簡單應用 (72) 4.2.1 按周期輸出方波的例子 (72) 4.2.2 實現原理 (72) 4.2.3 具體程序 (72) 4.3 STM32定時器的復雜應用—檢測輸入方波的頻率 (77) 4.3.1 STM32定時器的其他特性 (77) 4.3.2 本例設計要求 (78) 4.3.3 硬件接口設計與測量原理 (79) 4.3.4 具體程序 (79) 4.4 PWM原理及其應用一—一個LED呼吸燈的實現 (84) 4.4.1 PWM的基本概念及其基本應用 (84) 4.4.2 STM32的PWM的實現原理 (84) 4.4.3 基于PWM的LED呼吸燈的實現思路 (88) 4.4.4 呼吸燈的實現程序 (89) 4.5 PWM原理及其應用二—通過L298N控制電機轉速 (96) 4.5.1 硬件設計 (96) 4.5.2 直流電機調速與調向的原理 (97) 4.5.3 程序實現 (97) 思考題 (104) 第5章 USART及其應用 (105) 5.1 串行通信模塊USART的基本應用要點 (105) 5.1.1 STM32的USART及其基本特性 (105) 5.1.2 STM32的USART應用的基本要領 (106) 5.2 一個USART的通信實現(STM32與PC)—查詢法 (107) 5.2.1 功能要求 (107) 5.2.2 實現難點 (108) 5.2.3 程序實現 (108) 5.2.4 USART應用的有關事項 (114) 5.3 一個USART的通信實現(STM32與PC)—中斷法 (115) 5.3.1 功能要求及通信協議設計 (115) 5.3.2 程序算法 (115) 5.3.3 本例的源程序 (116) 5.4 兩個USART的通信實現 (124) 5.4.1 功能要求與通信協議 (124) 5.4.2 接口設計 (124) 5.4.3 程序實現 (125) 5.5 USART應用小結 (139) 思考題 (141) 第6章 人機界面—按鍵輸入與液晶顯示 (142) 6.1 STM32與液晶模塊12864的接口實現 (142) 6.1.1 STM32與液晶模塊12864的接口實現—延時法 (142) 6.1.2 STM32與液晶模塊12864的接口實現—查詢“忙”狀態 (153) 6.2 基于液晶模塊12864的菜單實現 (173) 6.2.1 程序中菜單的種類與菜單化程序的優勢 (173) 6.2.2 基于液晶模塊12864的菜單實現實例 (173) 6.3 矩陣鍵盤的接口實現 (186) 6.3.1 矩陣鍵盤的應用與程序設計思想 (186) 6.3.2 4×4矩陣鍵盤的硬件設計 (186) 6.3.3 演示程序 (187) 6.4 本章小結 (198) 思考題 (199) 第7章 同步串行接口總線SPI與I2C (200) 7.1 STM32的SPI (200) 7.1.1 SPI概述 (200) 7.1.2 STM32之SPI總線的應用要點 (201) 7.2 SPI的接口應用及其實現 (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總線應用要領 (226) 7.4 STM32的I2C總線的應用舉例 (227) 7.4.1 具有I2C接口的DS3231時鐘模塊 (227) 7.4.2 STM32與DS3231時鐘模塊的硬件接口 (229) 7.4.3 STM32與DS3231的軟件接口及其演示實例 (229) 7.5 I2C總線穩健性設計 (247) 思考題 (247) 第8章 ADC、DAC與DMA及其應用 (248) 8.1 STM32的DMA (248) 8.1.1 STM32的DMA及其基本特性 (248) 8.1.2 STM32的DMA原理及其配置要點 (249) 8.2 STM32的ADC (251) 8.2.1 STM32的ADC的基本特性 (251) 8.2.2 STM32的ADC的程序流程與編程要點 (253) 8.3 一個三通道A/D轉換的范例 (254) 8.3.1 功能要求與方案設計 (254) 8.3.2 實現程序 (256) 8.3.3 本例的中斷法實現 (263) 8.4 STM32的DAC (266) 8.4.1 DAC概述 (266) 8.4.2 DAC的配置要領 (266) 8.4.3 DAC應用實例 (268) 思考題 (277) 第9章 工程實例—基于線性CCD的小車循跡系統 (278) 9.1 系統要求 (278) 9.2 線性CCD的原理及其使用 (278) 9.2.1 線性CCD傳感器原理 (279) 9.2.2 線性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 系統性能實測 (315) 9.5.1 系統實物與測試環境 (315) 9.5.2 系統實測結果 (316) 思考題 (318) 參考文獻 (319) 本書涵蓋了基于ARM的STM32系統的基本概念、基本原理、應用技術。硬件原理的闡述以"夠用、適用、易學”為原則,降低讀者入門和理解的難度。STM32的軟件設計基于固件庫,方便讀者上手。 本書在內容組織和框架設計上具有兩個鮮明特點:全案例、基于讀者學習。從讀者學習的角度,組織每個章節的內容體系,對STM32常用的典型外設模塊的原理及其應用設計均以若干個完整案例呈現,同時也給出了一個完整的綜合性工程案例,這些都十分有利于學習者學習和模仿。 本書可作為計算機、電子、通信、機電、自動化及其相關專業的本、專科學生及研究生的教材,也可作為從事檢測、自動控制等領域工作的嵌入式系統開發的工程技術人員的參考用書。
嵌入式系統的發展確實超乎我們的想象。從早起的8位單片機,到目前主流的32位單片機,其應用已深深滲透于生產生活的各個方面。作為ARM的一個典型系列,STM32以其較高的性能和優越的性價比,毫無疑問地成為32位單片機市場的主流。把STM32引入大學的培養體系,已經成為高校廣大師生的普遍共識和共同實踐。
普遍都認為,基于ARM的嵌入式系統不僅難教而且難學。究其原因,無外乎三個方面:①功能多導致的問題。功能多導致系統復雜,這樣給理解帶來諸多困難,使得從傳統的8位單片機系統轉過來的學習者感覺難以適應,因為傳統的8位單片機,例如51單片機,功能相對單一,結構原理相對簡單。②芯片系列多導致的問題。由于基于ARM的單片機系列較多,功能、性能差異又較大,開發環境又往往不一樣,尤其是與8位單片機學習者已熟悉的KEIL C差異較大,再者,由于ARM單片機出現晚,發展歷史沒有8位單片機長,資料積累遠不如8位單片機豐富,這些都對學習者提出了挑戰、形成了恐慌。③開發模式不一樣導致的問題。每個ARM系列單片機往往其開發環境、開發模式是不一樣的。以STM32為例,開發環境就有好幾種,開發模式又有寄存器模式、固件庫函數模式兩種,再加上各自又可對應基于操作系統和無操作系統的形式,工程模板的配置很多初學者往往不得其要領,所有這些使得傳統的單片機學習者在從8位單片機向ARM遷移的過程中,感覺信心不足,不敢輕易涉足。 作者本身是傳統8位單片機的一個資深學習者和應用開發者,對上述這些感同身受、體會深厚。正因為如此,由于一個偶然的觸發,讓我在2014年暑假下定決心一定要破破這個邪,從而開始了長達近兩年的學習和教材撰寫過程,走上了一個人的朝圣之旅。 正是這不折不扣的兩年學習和思考,引領我在本教材的框架構思和具體撰寫中,毫無覺察地將自己設置在學習者的立場和視野上。本教材的撰寫自始至終都堅定地遵循了“二二”思想。第一個“二”,即教材撰寫的兩個原則;第二個“二”,即教材撰寫的兩個特色。 教材撰寫的兩個原則。一是基于學習者學習的原則,而不是方便教授者教的原則;二是刪繁就簡、容易上手的原則,對傳統讀者感覺恐慌的部分,圍繞應用和實踐,采取夠用、適用的方式,將其簡化,降低學習恐懼,對諸如工程模板配置等問題又往往從根本上、從本質上闡述到位,使學習者真正理解為什么要這樣做,從而避免云里霧里、一知半解,實現得心應手、運用自如。 教材撰寫的兩個特色。一是圍繞學習者學習,二是全案例驅動。具體地說,就是完全站在學習者學習的角度,設計整個教材的邏輯關系,組織每個章節的內容體系,在簡明扼要地闡述STM32常用的每一個典型外設模塊的原理的基礎上,圍繞其應用,均以一個以上完整案例的形式討論其設計精髓,并在教材的最后給出了一個完整的工程案例,所有這些案例的硬件和軟件完全公開、毫無保留,因此十分有利于學習者學習和模仿。大量的教學實踐表明,模仿是學習單片機最為成功的一種方式之一,它不僅可以讓學習產生成就感,而且可以較快地激發學習興趣和動力。 本教材的第一部分討論了怎么學STM32的問題。分別從學習STM32的基礎要求、STM32的基本架構和大致原理、學習STM32的基本方法、學STM32需要哪些工具或平臺等幾個方面加以闡述。 教材的第二部分圍繞一個GPIO輸出的簡單案例,討論了STM32應用開發所必需的開發環境配置(包括模板的建立)、程序的下載與調試、STM32程序開發的三種模式等問題。 教材的其余部分,分別通過一個及以上的完整案例,討論了STM32中最為典型的外設與功能模塊,即GPIO輸入輸出、延時的實現(延時函數、SysTick、定時器中斷)、TIMER與PWM、USART、基于液晶和按鍵的人機界面、I2C與SPI、A/D、D/A、DMA、中斷等的工作原理、應用設計、程序實現。 教材的最后部分,討論了一個基于線性CCD路徑識別的綜合性工程案例。這個案例幫助學習者進一步建立模塊化思想,提高設計與開發STM32的綜合應用系統的能力與信心。 本教材的所有案例均經過作者精心設計并一一實驗驗證。所有案例的功能要求完整、注釋完整、代碼完整,真正做到了全公開、全透明、無保留。 一點建議:從學習入門和一般應用的角度,我傾向于不要先花很多精力去學嵌入式實時操作系統(例如μC/OS),原因有二:一方面,因其體系和概念過于復雜、抽象,初學者難以駕馭,學習起來會非常困難,學習效率會異常低下,這樣反而影響最重要的最根本的內容的學習,可能會使原本不足的學習興趣和動力出現“斷崖式”下降;另一方面,對于一般的應用,多數是不需要基于操作系統的,況且,多數觀點認為STM32并不十分適合嵌入操作系統。 教材的編寫是一個艱難和孤獨的過程,一本好的教材的出版更是需要心無旁騖、摒棄雜念。在整整一年的撰寫和實驗驗證過程中,我更加對此深信不疑。本教材絕大多數內容均為作者原創,編寫風格也不同于大多數教材的模式,因為將顯得復雜的原理分解至各個功能模塊去闡述和討論,因此較好地迎合了學習者的學習規律。可以不自謙地說,這是一本真正意義上以學習產出(OBE)為導向的教材。 本教材得到了紹興文理學院浙江省新興特色專業自動化專業建設項目經費的資助,是2015年紹興市重點建設教材。 本教材由紹興文理學院沈紅衛教授、任沙浦副教授、朱敏杰講師、盧雪萍講師,浙江工業職業技術學院楊亦紅講師等共同完成,紹興文理學院自動化專業13級項燁雯、12級陳劍泓等同學參與了部分圖表的繪制。在教材的編寫過程中,參閱了許多資料,在此對本教材參考資料的作者表示誠摯感謝,對不能一一標明來源的資料的作者表示真誠的歉意和敬意。對直接、間接為本教材出版傾注智慧、付出心力、提供幫助的所有人,我都心懷滿滿的感謝! 由于水平所限,書中難免存在錯誤和不周之處,懇請同行專家和讀者不吝指正。 沈紅衛 于紹興風則江邊 2017年5月20日 |