基于構件化的嵌入式系統(tǒng)設計——STM32微控制器
定 價:59 元
- 作者:索明何 邢海霞 王宜懷 丁曉磊 著
- 出版時間:2023/8/1
- ISBN:9787111733249
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP368.1
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書以“項目目標、知識準備、項目實施、拓展學習、評價反饋”的項目化方式組織內(nèi)容,按照“搭積木”的設計思想,共設計了8個項目:GPIO基礎應用—實現(xiàn)閃燈和開關狀態(tài)檢測與控制功能;利用定時中斷實現(xiàn)頻閃燈;GPIO和定時器的綜合應用—實現(xiàn)數(shù)碼管顯示、鍵盤檢測與控制、測溫功能;利用UART實現(xiàn)上位機和下位機的通信;利用Timer實現(xiàn)PWM和輸入捕獲功能;利用ADC設計簡易數(shù)字電壓表;利用SPI實現(xiàn)多機串行通信;利用CAN實現(xiàn)多機通信。每個項目均采用“通用知識”→“嵌入式構件設計”→“應用層程序設計”→“學以致用與創(chuàng)新”的學習流程,最后可利用8個項目中的部分項目或全部項目進行綜合應用系統(tǒng)設計和課程考核。本書注重理論與實踐相結合,突出“學以致用”,注重培養(yǎng)創(chuàng)新意識和創(chuàng)新能力。
本書可作為高等院校電子信息類、計算機類、自動化類等專業(yè)的嵌入式系統(tǒng)設計教材,也可作為嵌入式技術培訓教材,還可供從事嵌入式技術開發(fā)的工程技術人員參考。
為了方便教學,本書配套電子教案、電子課件、嵌入式技術資源、微課視頻、模擬試卷及答案等教學資源。凡選用本書作為授課教材的教師,均可通過QQ(2314073523)咨詢教學資源等事宜。
未經(jīng)許可,不得以任何方式復制或抄襲本書的任何內(nèi)容(含文字、創(chuàng)意、版式、案例和設計等),書中配套資源不得用于在線課程建設、微課制作等。版權所有,侵權必究。
前?言
嵌入式技術是推動物聯(lián)網(wǎng)應用,制造業(yè)高端化、智能化、綠色化發(fā)展的重要技術基礎。“單片機與嵌入式系統(tǒng)”是電子信息類、計算機類、自動化類等專業(yè)的核心課程,該課程面向嵌入式系統(tǒng)設計師工作崗位,目的是為社會培養(yǎng)具有嵌入式智能產(chǎn)品設計、分析、調試與創(chuàng)新能力的高素質技術技能型人才。嵌入式系統(tǒng)由嵌入式硬件和嵌入式軟件組成,隨著技術的發(fā)展,嵌入式芯片的硬件集成度越來越高,使得嵌入式硬件設計難度不斷降低,因此嵌入式軟件設計在整個嵌入式系統(tǒng)開發(fā)中所占的分量越來越大。嵌入式軟件設計的主流語言是C語言,讀者可通過本書第一著者在機械工業(yè)出版社出版的《C語言程序設計》加強C語言程序設計基礎。
目前,越來越多的企業(yè)采用以ARM微處理器為內(nèi)核的微控制器開發(fā)嵌入式智能產(chǎn)品,眾多高校也以基于ARM內(nèi)核的微控制器為藍本開展嵌入式技術教學。目前,嵌入式技術教學中主要存在以下三個問題:
1)過于依賴具體的芯片資料,直接將芯片手冊翻譯成對應的教學章節(jié),沒有對嵌入式系統(tǒng)涉及的通用知識和共性要素進行提取和總結,很難體現(xiàn)學習重點;同時也會導致一旦換了嵌入式芯片,很難實現(xiàn)在不同嵌入式芯片和不同嵌入式應用系統(tǒng)之間的軟硬件可移植和可復用。
2)直接使用芯片廠家提供的微控制器底層驅動庫進行應用程序開發(fā),而其底層驅動庫存在兩大弊端:一是底層驅動函數(shù)的參數(shù)使用結構體指針變量,這要比使用普通變量作為函數(shù)參數(shù)的學習難度大,并且在程序執(zhí)行期間,結構體變量的所有成員一直駐留在內(nèi)存中,因此結構體變量中未使用的成員會白白浪費微控制器的內(nèi)存空間;二是不同片內(nèi)外設的底層驅動未能相互獨立,在實現(xiàn)某一個片內(nèi)外設的底層驅動功能時,需要調用另一個片內(nèi)外設的底層驅動函數(shù),這不符合嵌入式軟件工程的設計要求。
3)嵌入式軟件工程文件組織不合理,使初學者分不清哪些工程文件是用戶文件,哪些工程文件是系統(tǒng)生成文件,導致學習者望而生畏。
上述的三個問題,導致嵌入式技術學習難度大、學習效果不理想。
針對上述問題,根據(jù)著者十幾年來的嵌入式系統(tǒng)應用項目開發(fā)經(jīng)驗和課程教學經(jīng)驗,為了實現(xiàn)嵌入式系統(tǒng)設計的可移植性和可復用性,嵌入式硬件和嵌入式軟件均采用構件化的設計思想,即對嵌入式硬件和嵌入式軟件進行封裝,供系統(tǒng)設計者調用,并倡導嵌入式軟件分層設計的理念,以大幅度降低嵌入式技術學習難度和開發(fā)難度,為因材施教提供有效可行的途徑(書中標有“*”的內(nèi)容,學習者可根據(jù)自身基礎,靈活將其作為必學內(nèi)容或選學內(nèi)容)。由于在嵌入式構件設計過程中,注重提取共性要素,而不依賴于具體的MCU芯片,因此,學習者在將來的嵌入式智能產(chǎn)品開發(fā)時,即使更換了芯片,嵌入式技術學習和應用也不需要從零開始。
根據(jù)黨的二十大精神,本書在編寫過程中,牢固樹立以學習者可持續(xù)發(fā)展為中心的教學理念,使學校教學過程與企業(yè)產(chǎn)品開發(fā)過程相對接。以“項目目標、知識準備、項目實施、拓展學習、評價反饋”的項目化方式組織內(nèi)容,按照“搭積木”的設計思想,共設計了8個項目,每個項目均采用了“通用知識”→“嵌入式構件設計”→“應用層程序設計”→“學以致用與創(chuàng)新”的學習流程。在教學過程中,可以根據(jù)實際情況,靈活調整項目2~8的教學順序,最后可利用8個項目中的部分項目或全部項目進行綜合應用系統(tǒng)設計和課程考核。
本書注重嵌入式軟件的規(guī)范性,提供的嵌入式軟件包括程序代碼和必要的文檔說明,同時注重理論與實踐相結合,注重培養(yǎng)學生的創(chuàng)新意識和創(chuàng)新能力。教師可利用書中設置的“知識鞏固”“學以致用”“思路總結”“活學活用”“學以致用與創(chuàng)新”等練習,從“素質”“知識”“能力”3個維度提高學生的嵌入式技術基礎與應用能力,同時培養(yǎng)學生具有良好的基本職業(yè)素質、團結協(xié)作素質、自主學習素質,使學生具有一定的辯證唯物主義運用能力、發(fā)現(xiàn)問題和解決問題的能力,同時具有安全意識、勞動意識、創(chuàng)新意識、創(chuàng)新能力和強烈的愛國主義精神,為中國式現(xiàn)代化建設和中華民族偉大復興而不懈奮斗、貢獻力量。
本書所附的“學習筆記”可用于書寫“課堂筆記”“知識鞏固”“學以致用與創(chuàng)新”等內(nèi)容,也可作為課程過程考核材料。讀者可自行加頁。
本書由索明何、邢海霞、王宜懷和丁曉磊著,索明何負責全書的策劃、內(nèi)容安排、案例選取和統(tǒng)稿工作。在編寫過程中,意法半導體(ST)大學計劃部提供了相關技術參考資料并給予了精心指導,在此表示衷心的感謝!
由于著者水平有限,疏漏之處在所難免,懇請廣大專家和讀者提出寶貴的意見和建議。著者聯(lián)系方式:1043510795@qq.com。
著者
目 錄
前言
項目1 GPIO基礎應用—實現(xiàn)閃燈和
開關狀態(tài)檢測與控制功能 1
項目目標 1
知識準備 2
任務1.1 熟悉嵌入式系統(tǒng)和課程學習
方法 2
1.1.1 嵌入式系統(tǒng)的概念和組成 2
1.1.2 嵌入式系統(tǒng)的知識體系和學習
建議 5
任務1.2 熟悉MCU資源和硬件最小
系統(tǒng) 6
1.2.1 STM32F1系列MCU簡介 6
1.2.2 MCU存儲映射、引腳功能與
硬件最小系統(tǒng) 7
任務1.3 掌握MCU的GPIO底層驅動
構件使用方法 12
1.3.1 GPIO的通用知識 12
1.3.2 MCU的GPIO底層驅動構件
使用方法 13
項目實施 17
任務1.4 嵌入式構件化設計及閃燈的
實現(xiàn) 17
1.4.1 小燈硬件構件和軟件構件的設計及使用方法 17
1.4.2 嵌入式軟件最小系統(tǒng)設計
—實現(xiàn)閃燈 21
任務1.5 開關狀態(tài)檢測與控制功能的
設計與實現(xiàn) 31
1.5.1 開關硬件構件和軟件構件的
設計及使用方法 31
1.5.2 開關狀態(tài)檢測與控制功能的
應用層程序設計 34
拓展學習 36
*任務1.6 熟悉MCU的GPIO底層驅動
構件源文件 36
評價反饋 41
項目2 利用定時中斷實現(xiàn)頻閃燈 43
項目目標 43
知識準備 43
任務2.1 理解定時器的定時原理 43
任務2.2 理解中斷的通用知識 44
2.2.1 中斷的基本概念 44
2.2.2 中斷的基本過程 47
2.2.3 CM3的非內(nèi)核模塊中斷管理
機制 48
項目實施 49
任務2.3 利用Timer定時中斷實現(xiàn)頻
閃燈 49
2.3.1 MCU的Timer基本定時底層
驅動構件的使用方法 49
2.3.2 利用Timer定時中斷實現(xiàn)頻閃燈
的應用層程序設計 52
任務2.4 利用內(nèi)核定時器(SysTick Timer)中斷實現(xiàn)頻閃燈 56
2.4.1 SysTick的功能特性及其底層
驅動構件的使用方法 56
2.4.2 利用SysTick定時中斷實現(xiàn)頻閃
燈的應用層程序設計 58
拓展學習 60
*任務2.5 熟悉MCU的定時器底層
驅動構件源文件 60
2.5.1 MCU的Timer基本定時底層驅動
構件源文件 60
2.5.2 MCU的SysTick定時器底層驅動構件源文件 63
評價反饋 64
項目3 GPIO和定時器的綜合應用—
實現(xiàn)數(shù)碼管顯示、鍵盤檢測與
控制、測溫功能 65
項目目標 65
知識準備 65
任務3.1 掌握數(shù)碼管的通用知識 65
3.1.1 數(shù)碼管的結構 65
3.1.2 基于MCU直接控制的數(shù)碼管
硬件構件設計 66
3.1.3 數(shù)碼管的筆形碼 67
3.1.4 基于MCU直接控制的數(shù)碼管
顯示原理 69
任務3.2 掌握鍵盤的通用知識 71
3.2.1 鍵盤的基本問題 71
3.2.2 鍵盤的兩種接口方式 72
任務3.3 基于TM1637的數(shù)碼管和鍵盤
構件設計 74
3.3.1 基于TM1637的數(shù)碼管和鍵盤
硬件構件設計 74
3.3.2 基于TM1637的數(shù)碼管和鍵盤
軟件構件的組成及使用方法 76
項目實施 79
任務3.4 基于TM1637的數(shù)碼管顯示的
應用層程序設計 79
3.4.1 使用軟件延時實現(xiàn)數(shù)碼管先后
顯示不同的數(shù)據(jù) 79
3.4.2 使用定時中斷實現(xiàn)數(shù)碼管先后
顯示不同的數(shù)據(jù) 81
任務3.5 基于TM1637的鍵盤檢測與控制的應用層程序設計 85
3.5.1 鍵盤檢測與控制的查詢程序
流程 85
3.5.2 應用實例參考程序 85
任務3.6 基于DS18B20的測溫功能
設計與實現(xiàn) 88
3.6.1 DS18B20的主要特點和基于DS18B20的測溫硬件構件
設計 88
3.6.2 基于DS18B20的測溫軟件構件的組成及使用方法 89
3.6.3 基于DS18B20的測溫功能應用
層程序設計 90
拓展學習 92
*任務3.7 基于TM1637的數(shù)碼管和
鍵盤軟件構件源文件的設計 92
*任務3.8 基于DS18B20的測溫軟件構件源文件的設計 98
評價反饋 103
項目4 利用UART實現(xiàn)上位機和下位
機的通信 105
項目目標 105
知識準備 105
任務4.1 理解UART的通用知識 105
任務4.2 掌握MCU的UART底層驅動
構件使用方法 108
4.2.1 MCU的UART主要特性和
引腳 108
4.2.2 MCU的UART底層驅動構件
的組成及使用方法 109
項目實施 112
任務4.3 UART通信應用層程序設計
與功能測試 112
4.3.1 UART通信的應用層程序
設計 112
4.3.2?UART通信的測試方法 115
4.3.3?使用printf函數(shù)輸出數(shù)據(jù) 116
拓展學習 118
*任務4.4 熟悉MCU的UART底層
驅動構件源文件 118
評價反饋 126
項目5 利用Timer實現(xiàn)PWM和輸入
捕獲功能 127
項目目標 127
知識準備 127
任務5.1 理解PWM和輸入捕獲的通用
知識 127
5.1.1 PWM的通用知識 127
5.1.2 輸入捕獲的通用知識 130
任務5.2 掌握Timer_PWM_INCAP
底層驅動構件使用方法 131
5.2.1 MCU的Timer通道引腳 131
5.2.2 Timer_PWM_INCAP底層驅動
構件的組成及使用方法 132
項目實施 138
任務5.3 利用PWM控制小燈的
亮度 138
任務5.4 利用輸入捕獲測量脈沖信號
的周期和脈寬 140
拓展學習 144
*任務5.5 熟悉Timer_PWM_INCAP
底層驅動構件源文件 144
評價反饋 159
項目6 利用ADC設計簡易數(shù)字
電壓表 161
項目目標 161
知識準備 161
任務6.1 理解ADC的通用知識 161
任務6.2 掌握MCU的ADC底層驅
動構件使用方法 164
6.2.1 MCU的ADC主要特性
和引腳 164
6.2.2 MCU的ADC底層驅動構件的
組成及使用方法 165