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