嵌入式計(jì)算機(jī)系統(tǒng)簡稱為嵌入式系統(tǒng),其概念初源于傳統(tǒng)測控系統(tǒng)對(duì)計(jì)算機(jī)的需求。隨著以微處理器(MPU)為內(nèi)核的微控制器(MCU)制造技術(shù)的不斷進(jìn)步,計(jì)算機(jī)領(lǐng)域在通用計(jì)算機(jī)系統(tǒng)與嵌入式計(jì)算機(jī)系統(tǒng)這兩大分支分別得以發(fā)展。通用計(jì)算機(jī)已經(jīng)在科學(xué)計(jì)算、通信、日常生活等各個(gè)領(lǐng)域產(chǎn)生重要影響。在后PC時(shí)代,嵌入式系統(tǒng)的廣闊應(yīng)用是計(jì)算機(jī)發(fā)展的重要特征。一般來說,嵌入式系統(tǒng)的應(yīng)用范圍可以粗略分為兩大類: 一類是電子系統(tǒng)的智能化(如工業(yè)控制、汽車電子、數(shù)據(jù)采集、測控系統(tǒng)、家用電器、現(xiàn)代農(nóng)業(yè)、嵌入式人工智能及物聯(lián)網(wǎng)應(yīng)用等),這類應(yīng)用也被稱為微控制器(MCU)領(lǐng)域; 另一類是計(jì)算機(jī)應(yīng)用的延伸(如平板電腦、手機(jī)、電子圖書等),這類應(yīng)用也被稱為應(yīng)用處理器(MAP)領(lǐng)域。在ARM產(chǎn)品系列中,ARM CortexM系列與ARM CortexR系列適用于電子系統(tǒng)的智能化類應(yīng)用,即微控制器領(lǐng)域; ARM CortexA系列適用于計(jì)算機(jī)應(yīng)用的延伸,即應(yīng)用處理器領(lǐng)域。不論如何分類,嵌入式系統(tǒng)的技術(shù)基礎(chǔ)是不變的,即要完成一個(gè)嵌入式系統(tǒng)產(chǎn)品的設(shè)計(jì),需要有硬件、軟件及行業(yè)領(lǐng)域相關(guān)知識(shí)。但是,隨著嵌入式系統(tǒng)中軟件規(guī)模的日益增大,業(yè)界對(duì)嵌入式底層驅(qū)動(dòng)軟件的封裝提出了更高的要求,因此嵌入式底層驅(qū)動(dòng)軟件的可復(fù)用性與可移植性受到特別的關(guān)注,嵌入式軟硬件構(gòu)件化開發(fā)方法逐步被業(yè)界重視。
本書1~5版先后獲得蘇州大學(xué)精品教材、江蘇省高等學(xué)校重點(diǎn)教材、十一五十二五普通高等教育本科規(guī)劃教材、國家精品在線開放課程等。本版是在2019年出版的第5版基礎(chǔ)上重新撰寫的,樣本芯片使用意法半導(dǎo)體ARM CortexM4內(nèi)核的STM32L431微控制器。同時(shí),在意法半導(dǎo)體、南京沁恒微電子及清華大學(xué)出版社的支持下,配備了可以直接實(shí)踐的硬件系統(tǒng),具備簡捷、便利、邊學(xué)邊實(shí)踐等優(yōu)點(diǎn),克服了實(shí)驗(yàn)箱模式的冗余、不方便帶出實(shí)驗(yàn)室、不易升級(jí)等缺點(diǎn),為探索嵌入式教學(xué)模式提供了一種新的嘗試。
書中以嵌入式硬件構(gòu)件及底層軟件構(gòu)件設(shè)計(jì)為主線,基于嵌入式軟件工程的思想,按照通用知識(shí)驅(qū)動(dòng)構(gòu)件使用方法測試實(shí)例構(gòu)件制作過程的線條,逐步闡述電子系統(tǒng)智能化嵌入式應(yīng)用的軟件與硬件設(shè)計(jì)。需要特別說明的是,雖然書籍撰寫與教學(xué)必須以某一特定芯片為藍(lán)本,但作為嵌入式技術(shù)基礎(chǔ),本書試圖闡述嵌入式通用知識(shí)要素。因此,本書以知識(shí)要素為基本立足點(diǎn)設(shè)計(jì)芯片底層驅(qū)動(dòng),使得應(yīng)用程序與芯片無關(guān),具有通用嵌入式計(jì)算機(jī)(GEC)的性質(zhì)。書中將大部分驅(qū)動(dòng)的使用方法提前闡述,而驅(qū)動(dòng)構(gòu)件的設(shè)計(jì)方法后置,
目的是先學(xué)會(huì)使用構(gòu)件進(jìn)行實(shí)際編程,后理解構(gòu)件的設(shè)計(jì)方法。因構(gòu)件設(shè)計(jì)方法部分有一定難度,對(duì)于不同要求的教學(xué)場景,也可不要求學(xué)生理解全部構(gòu)件的設(shè)計(jì)方法,講解一兩個(gè)即可。
本書具有以下特點(diǎn)。
(1) 把握通用知識(shí)與芯片相關(guān)知識(shí)之間的平衡。書中對(duì)于嵌入式通用知識(shí)的基本原理,以應(yīng)用為立足點(diǎn),進(jìn)行語言簡潔、邏輯清晰的闡述,同時(shí)注意與芯片相關(guān)知識(shí)之間的銜接,使讀者在更好地理解基本原理的基礎(chǔ)上,學(xué)習(xí)芯片應(yīng)用的設(shè)計(jì),進(jìn)而加深對(duì)通用知識(shí)的理解。
(2) 把握硬件與軟件的關(guān)系。嵌入式系統(tǒng)是軟件與硬件的綜合體,嵌入式系統(tǒng)設(shè)計(jì)是一個(gè)軟件、硬件協(xié)同設(shè)計(jì)的工程,不能像通用計(jì)算機(jī)那樣把軟件、硬件完全分開來看。特別是對(duì)電子系統(tǒng)智能化嵌入式應(yīng)用來說,沒有對(duì)硬件的理解就不可能寫好嵌入式軟件,同樣沒有對(duì)軟件的理解也不可能設(shè)計(jì)好嵌入式硬件。因此,本書注重把握硬件知識(shí)與軟件知識(shí)之間的關(guān)系。
(3) 對(duì)底層驅(qū)動(dòng)進(jìn)行構(gòu)件化封裝。書中根據(jù)嵌入式軟件工程基本原則并按照構(gòu)件化封裝要求,給出每個(gè)模塊的底層驅(qū)動(dòng)程序,同時(shí)給出詳細(xì)、規(guī)范的注釋及對(duì)外接口,為實(shí)際應(yīng)用提供底層構(gòu)件,方便移植與復(fù)用,為讀者進(jìn)行實(shí)際項(xiàng)目開發(fā)節(jié)省大量時(shí)間。
(4) 設(shè)計(jì)合理的測試用例。書中所有源程序均經(jīng)測試通過,并保留測試用例在本書的網(wǎng)上教學(xué)資源,避免了因例程的書寫或固有錯(cuò)誤給讀者帶來煩惱。這些測試用例,也為讀者驗(yàn)證與理解帶來方便。
(5) 網(wǎng)上教學(xué)資源提供了所有模塊完整的底層驅(qū)動(dòng)構(gòu)件化封裝程序與測試用例,包括需要使用PC的程序測試用例,提供了PC的C#源程序、芯片資料、使用文檔、硬件說明等,還制作了課件及微課視頻,網(wǎng)上教學(xué)資源的版本將會(huì)適時(shí)更新。
本書由蘇州大學(xué)王宜懷教授擔(dān)任主編,李躍華、徐文彬、施連敏擔(dān)任副主編。蘇州大學(xué)嵌入式人工智能與物聯(lián)網(wǎng)實(shí)驗(yàn)室的博士研究生、碩士研究生參與程序開發(fā)、書稿整理及有關(guān)資源建設(shè),他們卓有成效的工作使得本書更加充實(shí)。ST 大學(xué)計(jì)劃的丁曉磊女士,ARM中國教育生態(tài)部的王夢馨女士、南京沁恒微電子的楊勇先生及劉帥先生等為本書提供了許多幫助。劉純平教授、趙雷教授、章曉芳副教授、劉曉升博士等老師參與本書撰寫的討論,提出了不少建設(shè)性建議,在此一并表示誠摯的感謝。
由于作者水平有限,書中難免存在不妥之處,懇望讀者提出寶貴意見和建議,以便再版時(shí)改進(jìn)。
蘇州大學(xué)王宜懷
2021年6月
嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第6版)(微課視頻版)
硬件資源及網(wǎng)上教學(xué)資源
硬件資源(AHLSTM32L431)
網(wǎng)上教學(xué)資源: AHLMCU6
文件夾內(nèi)容
01Information
內(nèi)核及芯片文檔
02Document
補(bǔ)充閱讀材料、硬件使用說明等
03Hardware
硬件文檔
04Software
CH01
硬件測試程序(含MCU方及PC方程序)
CH02
認(rèn)識(shí)匯編語句生成的機(jī)器碼
CH04
直接地址方式干預(yù)發(fā)光二極管; 構(gòu)件方式干預(yù)發(fā)光二極管; 匯編編程方式干預(yù)發(fā)光二極管
CH06
直接地址方式串口發(fā)送數(shù)據(jù),構(gòu)件方式串口發(fā)送數(shù)據(jù),利用串口接收中斷進(jìn)行數(shù)據(jù)接收
CH07
內(nèi)核SysTick定時(shí)器; 帶日歷功能實(shí)時(shí)時(shí)鐘RTC; Timer模塊基本定時(shí)器; 脈寬調(diào)制PWM、輸入捕捉、輸出比較; PC方配套測試程序
CH08
Flash、ADC、DAC; PC方配套測試程序
CH09
SPI、I2C、TSC; GPIO模擬TSC
CH10
CAN、DMA、位帶操作
CH11
系統(tǒng)時(shí)鐘程序的注解、看門狗、CRC
CH12\RTOS
實(shí)時(shí)操作系統(tǒng)的延時(shí)函數(shù)、事件、消息隊(duì)列、信號(hào)量、互斥量
CH12\EORS
嵌入式人工智能: 物體認(rèn)知系統(tǒng)
CH12\NBIoT
窄帶物聯(lián)網(wǎng)NBIoT
CH12\IoT
物聯(lián)網(wǎng)的4G、Cat1、WiFi、WSN通信方式
05Tool
AHLSTM32L431板載TTLUSB芯片驅(qū)動(dòng)程序
06Other
C#2019串口測試程序; C#快速應(yīng)用指南下載導(dǎo)引
該網(wǎng)上教學(xué)資源適時(shí)更新,可通過百度搜索蘇州大學(xué)嵌入式學(xué)習(xí)社區(qū)官網(wǎng)金葫蘆專區(qū)嵌入式書6版下載; 也可通過清華大學(xué)出版社官網(wǎng)下載。
第1章概述
1.1初識(shí)嵌入式系統(tǒng)
1.1.1運(yùn)行硬件系統(tǒng)
1.1.2實(shí)踐體系簡介
1.1.3編譯、下載與運(yùn)行個(gè)嵌入式程序
1.2嵌入式系統(tǒng)的定義、發(fā)展簡史、分類及特點(diǎn)
1.2.1嵌入式系統(tǒng)的定義
1.2.2嵌入式系統(tǒng)的由來及發(fā)展簡史
1.2.3嵌入式系統(tǒng)的分類
1.2.4嵌入式系統(tǒng)的特點(diǎn)
1.3嵌入式系統(tǒng)的學(xué)習(xí)困惑、知識(shí)體系及學(xué)習(xí)建議
1.3.1嵌入式系統(tǒng)的學(xué)習(xí)困惑
1.3.2嵌入式系統(tǒng)的知識(shí)體系
1.3.3基礎(chǔ)階段的學(xué)習(xí)建議
1.4微控制器與應(yīng)用處理器簡介
1.4.1MCU簡介
1.4.2以MCU為核心的嵌入式測控產(chǎn)品的基本組成
1.4.3MAP簡介
1.5嵌入式系統(tǒng)常用術(shù)語
1.5.1與硬件相關(guān)的術(shù)語
1.5.2與通信相關(guān)的術(shù)語
1.5.3與功能模塊相關(guān)的術(shù)語
本章小結(jié)
習(xí)題
第2章ARM CortexM4微處理器
2.1ARM CortexM4微處理器簡介
2.1.1ARM CortexM4微處理器內(nèi)部結(jié)構(gòu)概要
2.1.2ARM CortexM4微處理器的內(nèi)部寄存器
2.2尋址方式與機(jī)器碼獲取方法
嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第6版)(微課視頻版)
2.2.1指令保留字簡表與尋址方式
2.2.2指令的機(jī)器碼
2.3基本指令分類解析
2.3.1數(shù)據(jù)傳送類指令
2.3.2數(shù)據(jù)操作類指令
2.3.3跳轉(zhuǎn)控制類指令
2.3.4其他指令
2.4匯編語言的基本語法
2.4.1匯編語言的格式
2.4.2常用偽指令簡介
本章小結(jié)
習(xí)題
第3章存儲(chǔ)器映像、中斷源與硬件小系統(tǒng)
3.1STM32L4系列MCU概述
3.1.1STM32L4系列MCU命名規(guī)則
3.1.2STM32L4存儲(chǔ)器映像
3.1.3STM32L4中斷源
3.2STM32L4芯片的引腳圖與硬件小系統(tǒng)
3.2.1STM32L4芯片的引腳圖
3.2.2STM32L4硬件小系統(tǒng)原理圖
3.3由MCU構(gòu)建通用嵌入式計(jì)算機(jī)
3.3.1嵌入式終端開發(fā)方式存在的問題與解決辦法
3.3.2提出GEC概念的時(shí)機(jī)、GEC定義與特點(diǎn)
3.3.3由STM32L431芯片構(gòu)成的GEC
本章小結(jié)
習(xí)題
第4章GPIO及程序框架
4.1GPIO通用基礎(chǔ)知識(shí)
4.1.1GPIO概念
4.1.2輸出引腳的基本接法
4.1.3上拉、下拉電阻與輸入引腳的基本接法
4.2軟件干預(yù)硬件的方法
4.2.1GPIO構(gòu)件API
4.2.2GPIO構(gòu)件的輸出測試方法
4.3認(rèn)識(shí)工程框架
4.3.1工程框架及所含文件簡介
4.3.2了解機(jī)器碼文件及芯片執(zhí)行流程簡析
4.4GPIO構(gòu)件的制作過程
4.4.1端口與GPIO模塊
4.4.2GPIO基本編程步驟并點(diǎn)亮一盞小燈
4.4.3GPIO構(gòu)件的設(shè)計(jì)
4.5個(gè)匯編語言工程: 控制小燈閃爍
4.5.1匯編工程文件的組織
4.5.2匯編語言小燈測試工程主程序
4.6實(shí)驗(yàn)一熟悉實(shí)驗(yàn)開發(fā)環(huán)境及GPIO編程
本章小結(jié)
習(xí)題
第5章嵌入式硬件構(gòu)件與底層驅(qū)動(dòng)構(gòu)件基本規(guī)范
5.1嵌入式硬件構(gòu)件
5.1.1嵌入式硬件構(gòu)件概念及其分類
5.1.2基于嵌入式硬件構(gòu)件的電路原理圖設(shè)計(jì)簡明規(guī)則
5.2嵌入式底層驅(qū)動(dòng)構(gòu)件的概念與層次模型
5.2.1嵌入式底層驅(qū)動(dòng)構(gòu)件的概念
5.2.2嵌入式硬件構(gòu)件與軟件構(gòu)件結(jié)合的層次模型
5.2.3嵌入式軟件構(gòu)件分類
5.3底層驅(qū)動(dòng)構(gòu)件的封裝規(guī)范
5.3.1構(gòu)件設(shè)計(jì)的基本思想與基本原則
5.3.2編碼風(fēng)格基本規(guī)范
5.3.3頭文件的設(shè)計(jì)規(guī)范
5.3.4源程序文件的設(shè)計(jì)規(guī)范
5.4硬件構(gòu)件及其驅(qū)動(dòng)構(gòu)件的復(fù)用與移植方法
5.4.1硬件構(gòu)件的復(fù)用與移植
5.4.2驅(qū)動(dòng)構(gòu)件的移植
本章小結(jié)
習(xí)題
第6章串行通信模塊及個(gè)中斷程序結(jié)構(gòu)
6.1異步串行通信的通用基礎(chǔ)知識(shí)
6.1.1串行通信的基本概念
6.1.2RS232和RS485總線標(biāo)準(zhǔn)
6.1.3TTLUSB串口
6.1.4串行通信編程模型
6.2基于構(gòu)件的串行通信編程方法
6.2.1STM32L431芯片UART對(duì)外引腳
6.2.2UART構(gòu)件API
6.2.3UART構(gòu)件API的發(fā)送測試方法
6.2.4printf函數(shù)的設(shè)置方法與使用
6.3UART構(gòu)件的制作過程
6.3.1UART寄存器概述
6.3.2利用直接地址操作的串口發(fā)送打通程序
6.3.3UART構(gòu)件設(shè)計(jì)
6.4中斷機(jī)制及中斷編程步驟
6.4.1關(guān)于中斷的通用基礎(chǔ)知識(shí)
6.4.2ARM CortexM4非內(nèi)核模塊中斷編程結(jié)構(gòu)
6.4.3STM32L431中斷編程步驟以串口接收中斷為例
6.5實(shí)驗(yàn)二串口通信及中斷實(shí)驗(yàn)
本章小結(jié)
習(xí)題
第7章定時(shí)器相關(guān)模塊
7.1定時(shí)器通用基礎(chǔ)知識(shí)
7.2STM32L431中的定時(shí)器
7.2.1ARM CortexM內(nèi)核定時(shí)器SysTick
7.2.2實(shí)時(shí)時(shí)鐘模塊
7.2.3Timer模塊的基本定時(shí)功能
7.3脈寬調(diào)制
7.3.1脈寬調(diào)制通用基礎(chǔ)知識(shí)
7.3.2基于構(gòu)件的PWM編程方法
7.3.3脈寬調(diào)制構(gòu)件的制作過程
7.4輸入捕捉與輸出比較
7.4.1輸入捕捉與輸出比較通用基礎(chǔ)知識(shí)
7.4.2基于構(gòu)件的輸入捕捉和輸出比較編程方法
7.4.3輸入捕捉和輸出比較構(gòu)件的制作過程
7.5實(shí)驗(yàn)三定時(shí)器及PWM實(shí)驗(yàn)
本章小結(jié)
習(xí)題
第8章Flash在線編程、ADC與DAC
8.1Flash在線編程
8.1.1Flash在線編程的通用基礎(chǔ)知識(shí)
8.1.2基于構(gòu)件的Flash在線編程方法
8.1.3Flash構(gòu)件的制作過程
8.2ADC
8.2.1ADC的通用基礎(chǔ)知識(shí)
8.2.2基于構(gòu)件的ADC編程方法
8.2.3ADC構(gòu)件的制作過程
8.3DAC
8.3.1DAC的通用基礎(chǔ)知識(shí)
8.3.2基于構(gòu)件的DAC編程方法
8.4實(shí)驗(yàn)四ADC實(shí)驗(yàn)
本章小結(jié)
習(xí)題
第9章SPI、I2C與TSC模塊
9.1串行外設(shè)接口SPI模塊
9.1.1串行外設(shè)接口SPI的通用基礎(chǔ)知識(shí)
9.1.2基于構(gòu)件的SPI通信編程方法
9.1.3SPI構(gòu)件的制作過程
9.2集成電路互聯(lián)總線模塊
9.2.1集成電路互聯(lián)總線的通用基礎(chǔ)知識(shí)
9.2.2基于構(gòu)件的I2C通信編程方法
9.2.3I2C構(gòu)件的制作過程
9.3觸摸感應(yīng)控制器模塊
9.3.1觸摸感應(yīng)控制器的基本原理
9.3.2基于構(gòu)件的TSC編程方法
9.3.3TSC構(gòu)件的制作過程
9.3.4模擬觸摸感應(yīng)輸入功能
9.4實(shí)驗(yàn)五SPI通信實(shí)驗(yàn)
本章小結(jié)
習(xí)題
第10章CAN總線、DMA與位帶操作
10.1CAN總線
10.1.1CAN總線的通用基礎(chǔ)知識(shí)
10.1.2基于構(gòu)件的CAN編程方法
10.1.3CAN構(gòu)件的制作過程
10.2DMA
10.2.1DMA的通用基礎(chǔ)知識(shí)
10.2.2基于構(gòu)件的DMA編程方法
10.2.3DMA構(gòu)件的制作過程
10.3位帶操作
10.3.1位帶操作的基本含義
10.3.2使用位帶操作的緣由及編程方法
本章小結(jié)
習(xí)題
第11章系統(tǒng)時(shí)鐘與其他功能模塊
11.1時(shí)鐘系統(tǒng)
11.1.1時(shí)鐘系統(tǒng)概述
11.1.2時(shí)鐘模塊寄存器及編程實(shí)例
11.2復(fù)位模塊與看門狗模塊
11.2.1復(fù)位模塊
11.2.2看門狗
11.3電源控制模塊與CRC校驗(yàn)?zāi)K
11.3.1電源控制模塊
11.3.2校驗(yàn)?zāi)K
11.4實(shí)驗(yàn)六綜合實(shí)驗(yàn)
本章小結(jié)
習(xí)題
第12章應(yīng)用案例
12.1嵌入式系統(tǒng)的穩(wěn)定性問題
12.2外接傳感器及執(zhí)行部件的編程方法
12.2.1開關(guān)量輸出類驅(qū)動(dòng)構(gòu)件
12.2.2開關(guān)量輸入類驅(qū)動(dòng)構(gòu)件
12.2.3聲音與加速度傳感器驅(qū)動(dòng)構(gòu)件
12.3實(shí)時(shí)操作系統(tǒng)的簡明實(shí)例
12.3.1無操作系統(tǒng)與實(shí)時(shí)操作系統(tǒng)
12.3.2RTOS中的常用基本概念
12.3.3線程的三要素、4種狀態(tài)及3種基本形式
12.3.4RTOS下的編程實(shí)例
12.4嵌入式人工智能的簡明實(shí)例
12.4.1EORS簡介
12.4.2AHLEORS的數(shù)據(jù)采集與訓(xùn)練過程
12.4.3在通用嵌入式計(jì)算機(jī)GEC上進(jìn)行的推理過程
12.5NBIoT的應(yīng)用簡介
12.5.1NBIoT應(yīng)用架構(gòu)
12.5.2AHLNBIoT開發(fā)套件簡介
12.5.3NBIoT的數(shù)據(jù)傳輸
12.64G、Cat1、WiFi及WSN的應(yīng)用
12.6.14G通信
12.6.2Cat1通信
12.6.3WiFi通信
12.6.4WSN
12.6.5WiFi 與WSN相結(jié)合系統(tǒng)
參考文獻(xiàn)