微處理器系統(tǒng)原理與應(yīng)用設(shè)計
定 價:36 元
- 作者:陳彥輝
- 出版時間:2022/4/8
- ISBN:9787560663340
- 出 版 社:西安電子科技大學(xué)出版社
- 中圖法分類:TP332-33
- 頁碼:
- 紙張:
- 版次:1
- 開本:16開
本書全面介紹微處理器系統(tǒng)的工作原理與應(yīng)用設(shè)計的基本方法。全書分為七章,包括數(shù)字處理系統(tǒng)概述、微處理器、匯編指令、程序設(shè)計、片上微處理器系統(tǒng)、常規(guī)外設(shè)應(yīng)用設(shè)計、典型微控制系統(tǒng)設(shè)計開發(fā)等內(nèi)容。本書主要從微處理器結(jié)構(gòu)出發(fā)介紹匯編指令,從匯編指令出發(fā)介紹C程序設(shè)計,旨在讓讀者深入理解微處理器的工作原理并掌握程序設(shè)計的精要,通過外設(shè)驅(qū)動程序設(shè)計和最小系統(tǒng)設(shè)計提高實際設(shè)計與調(diào)試能力。
本書可作為高等學(xué)校電子信息類專業(yè)“微機原理”和“嵌入式系統(tǒng)程序設(shè)計”等課程的教材或教學(xué)參考書,亦可供其他專業(yè)師生及相關(guān)工程技術(shù)人員參考學(xué)習(xí)。
本書作者精心制作了PPT文件,有需要的讀者可向出版社申請。
筆者自2009年起承擔“微機原理與系統(tǒng)設(shè)計”(簡稱“微原”)課程的教學(xué),發(fā)現(xiàn)課程教學(xué)部分內(nèi)容已不適應(yīng)現(xiàn)代企業(yè)的需求,所介紹的經(jīng)典微處理器8086雖然非常適合用來講解原理,但是沒有真實平臺能夠演示,使學(xué)生不能在實際應(yīng)用中感受和領(lǐng)會微機原理的奧妙。
隨著ARM系列微處理器的快速發(fā)展,基于ARM的微控器紛紛登場,不僅占領(lǐng)了大多數(shù)消費電子市場,在工業(yè)控制和專用領(lǐng)域也得到了廣泛應(yīng)用,特別是物聯(lián)網(wǎng)時代的到來,使得嵌入式系統(tǒng)成為當代產(chǎn)業(yè)的“寵兒”。
作為課程負責(zé)人,筆者深知講授8086與產(chǎn)業(yè)需求差別太大,現(xiàn)在的研發(fā)項目都在使用ARM平臺,而8086僅僅是為了滿足課程需要,因此采用ARM處理器代替8086來講解微機原理勢在必行。
使用ARM處理器時面臨兩種選擇:基于ARM7內(nèi)核或Cortex-M3(簡寫為CM3)內(nèi)核的處理器。如何做出選擇呢?在構(gòu)思本書時,盡管ARM7的資料非常完善,按理說應(yīng)該是最佳選擇,但考慮到CM3是ARM公司的新產(chǎn)品,將來必定被廣泛應(yīng)用,且CM3的生態(tài)會更好;而ARM7只是一款當時流行的處理器,不久將會退出歷史舞臺。另外,CM3的構(gòu)架和指令操作相對簡單易學(xué),特別是存儲訪問和中斷處理與8086相似;而ARM7的異常處理操作復(fù)雜且存儲訪問需要考慮字對齊,對于初學(xué)者有一定難度。經(jīng)過對比斟酌,筆者最終選擇了CM3。2010年的暑假完成了基于STM32F103的教學(xué)講義,后由于事務(wù)較多,寫寫停停,終沒有靜心完成本書。
隨著教學(xué)改革和專業(yè)認證等工作的推進,課程體系及內(nèi)容都發(fā)生了變化。目前,“微機原理”課程分為兩部分:一部分是“微處理器系統(tǒng)原理與應(yīng)用”課程,主要包括CM系列處理器組成、匯編程序設(shè)計、系統(tǒng)組成結(jié)構(gòu)和外設(shè)應(yīng)用等內(nèi)容;另一部分是“數(shù)字電路和邏輯設(shè)計”課程,包括總線和存儲系統(tǒng)電路等內(nèi)容以及采用數(shù)字電路實現(xiàn)簡易微控器設(shè)計。
近兩年,意法半導(dǎo)體公司中國大學(xué)計劃發(fā)起了嵌入式技術(shù)專業(yè)培養(yǎng)與認證活動。通過調(diào)研發(fā)現(xiàn),雖然用微處理器的人很多,但能夠用好的人并不多,主要是對微處理器的原理掌握不深入,不能將原理與實際緊密融合,特別是對C語言與微處理器操作之間的關(guān)系不清楚。大家希望有一本將原理與應(yīng)用相結(jié)合所編寫的教材,讓初學(xué)者掌握原理且能夠利用原理來理解程序。筆者有幸得到了意法半導(dǎo)體公司中國大學(xué)計劃資助的教育部產(chǎn)學(xué)協(xié)同育人項目的支持,從而有機會完成本書,了卻十多年的愿望,也是對多年來課程教學(xué)改革的總結(jié)。
微機原理的重點是指令,它是連接軟件和硬件的橋梁。用指令編寫程序的實質(zhì)是用戶通過控制微處理器進行各種硬件操作。要編好程序,就要用好指令;要用好指令,則必須理解微處理器的構(gòu)架及運行機制;谥噶畹膮R編程序開發(fā)在時間效率和易讀性方面的表現(xiàn)比C語言差,因此利用C語言編寫指令更便于理解硬件操作的過程。清楚了C語言的執(zhí)行過程后,一方面可以靈活運用語句提高處理器的執(zhí)行效率;另一方面可以從處理器執(zhí)行過程中發(fā)現(xiàn)軟件設(shè)計與執(zhí)行的錯誤或不足,加快軟件調(diào)試進程。
總而言之,“代碼在手中,運行在心中”。也就是說,當我看到C程序時,就能夠在腦海里浮現(xiàn)出處理器及系統(tǒng)各單元在相互協(xié)作、數(shù)據(jù)流在各單元中流出流入的宏觀場面。
本書分為七章,各章安排如下:
第一章,從數(shù)字信息處理角度引入微處理器系統(tǒng),同時給出微處理器所用的數(shù)制表示和二進制運算的基本規(guī)則,并介紹了微處理器及系統(tǒng)的發(fā)展史。
第二章,從信息處理系統(tǒng)設(shè)計的角度,按照運算器、寄存器、控制器、指令產(chǎn)生與編碼、指令讀取與譯碼的順序漸入式勾勒出微處理器架構(gòu)和操作機制,最終給出常規(guī)微處理器的完整架構(gòu)。通過分析目前流行的Cortex-M4處理器的內(nèi)核結(jié)構(gòu)、存儲系統(tǒng)和異常處理機制,可使讀者對微處理器構(gòu)造和指令運行機制有深入的認識,以便后面更好地理解和應(yīng)用指令。
第三章,介紹了與指令及其操作相關(guān)的概念和流程,并從數(shù)據(jù)傳輸、數(shù)據(jù)運算、流程控制和異常處理這四個方面介紹微處理器最為通用的指令;利用圖表結(jié)合的方法分析了處理器的具體操作方法,使讀者能夠“見指令明操作,想操作知指令”;還介紹了常用的數(shù)字信號處理指令,便于從事信號處理和數(shù)據(jù)通信工作的讀者進行程序設(shè)計。
第四章,介紹了程序設(shè)計的基本方法,包括常規(guī)的變量定義、賦值、運算、分支跳轉(zhuǎn)、調(diào)用等操作,同時對程序設(shè)計流程、異常處理編程和混合編程等內(nèi)容進行了詳細描述。大部分內(nèi)容采用匯編語言和C語言兩種方式對照描述,這樣可以有效幫助讀者建立C語句與微處理器操作之間的聯(lián)系,讓讀者明白語句執(zhí)行的原理和過程,能夠從微處理器結(jié)構(gòu)角度來理解軟件的執(zhí)行。
第五章,介紹了片上微處理器系統(tǒng)的基本構(gòu)架和系統(tǒng)原理、Cortex-M4處理器的基本組成和關(guān)鍵部件、STM32F401的基本組成和典型外設(shè)原理、最為常用的中斷系統(tǒng)結(jié)構(gòu)與應(yīng)用開發(fā),使讀者能夠掌握微處理器系統(tǒng)的典型構(gòu)架和組成以及典型外設(shè)的工作原理。
第六章,介紹了外設(shè)操作,即如何通過對外設(shè)接口中的寄存器進行讀寫來實現(xiàn)操作控制、狀態(tài)讀取、參數(shù)配置、數(shù)據(jù)收發(fā),并穿插介紹了輪詢和中斷的應(yīng)用;以STM32F401為平臺,介紹了時鐘管理、GPIO、EXTI、定時器、USART、DMAC、ADC等常規(guī)外設(shè)的配置及應(yīng)用設(shè)計。
第七章,介紹了如何根據(jù)需求來設(shè)計和開發(fā)一個簡易的典型微控制系統(tǒng),對電路設(shè)計、設(shè)備驅(qū)動開發(fā)、功能調(diào)試以及模擬仿真等關(guān)鍵環(huán)節(jié)進行了詳細描述,使讀者能夠掌握微處理器系統(tǒng)的設(shè)計開發(fā)方法、微控制系統(tǒng)的常規(guī)電路設(shè)計、驅(qū)動軟件設(shè)計的基本框架、硬件調(diào)試與集成等。
由于學(xué)習(xí)本書需要C語言基礎(chǔ),因此本書在附錄中介紹了C語言程序設(shè)計入門。
為了使讀者掌握微處理器系統(tǒng)的應(yīng)用開發(fā),本書給出了編程和調(diào)試的基本思路、方法與應(yīng)用實例,讀者可以在相應(yīng)的平臺上進行練習(xí),有助于提升實際動手能力。
本書由西安電子科技大學(xué)通信工程學(xué)院陳彥輝、馮磊、康槿共同編著。陳彥輝編寫第一、二、三、四章,陳彥輝與馮磊合編第五章和第六章,陳彥輝與康槿合編第七章。陳彥輝負責(zé)全書的統(tǒng)稿工作。
本書在編寫過程中得到了意法半導(dǎo)體中國區(qū)微控制器市場及應(yīng)用總監(jiān)曹錦東先生、大學(xué)計劃經(jīng)理丁曉磊女士的幫助,在此表示感謝!
由于筆者水平有限,書中難免存在不妥之處,懇請廣大讀者批評指正。
陳彥輝
2021年12月
第一章 數(shù)字處理系統(tǒng)概述 1
1.1 信息處理系統(tǒng)的結(jié)構(gòu) 1
1.2 數(shù)制與運算 3
1.2.1 二進制數(shù) 4
1.2.2 十六進制數(shù)與八進制數(shù) 5
1.2.3 二進制算術(shù)運算 6
1.2.4 數(shù)值編碼 7
1.2.5 數(shù)據(jù)編碼與邏輯運算 9
1.3 數(shù)字處理系統(tǒng)的構(gòu)成 10
1.3.1 系統(tǒng)結(jié)構(gòu) 10
1.3.2 處理流程 11
1.3.3 操作描述 11
1.3.4 基于微處理器的系統(tǒng)結(jié)構(gòu) 14
1.4 典型微處理器及系統(tǒng) 14
1.4.1 Intel微處理器 15
1.4.2 ARM處理器 18
1.4.3 微處理器系統(tǒng)的應(yīng)用 19
習(xí)題 20
第二章 微處理器 21
2.1 微處理器的基本架構(gòu) 21
2.1.1 運算器 21
2.1.2 寄存器組 22
2.1.3 處理電路 24
2.1.4 控制指令 26
2.1.5 數(shù)據(jù)存儲 28
2.1.6 處理器結(jié)構(gòu) 31
2.1.7 存儲結(jié)構(gòu) 32
2.2 數(shù)據(jù)處理 33
2.2.1 指令 33
2.2.2 程序 34
2.2.3 異常處理機制 36
2.3 Cortex-M4處理器內(nèi)核 37
2.3.1 寄存器組 38
2.3.2 指令執(zhí)行 38
2.3.3 處理操作 39
2.3.4 特殊寄存器 39
2.4 Cortex-M4存儲系統(tǒng) 41
2.4.1 存儲器空間映射 41
2.4.2 總線訪問 41
2.4.3 棧存儲 42
2.4.4 位段操作 44
2.5 異常處理 44
習(xí)題 46
第三章 匯編指令 48
3.1 指令體系 48
3.1.1 指令格式 48
3.1.2 指令代碼 49
3.1.3 指令執(zhí)行的描述 50
3.2 數(shù)據(jù)傳輸指令 51
3.2.1 寄存器與存儲器之間的傳輸 51
3.2.2 寄存器之間的傳輸 57
3.2.3 立即數(shù)加載到寄存器 58
3.2.4 寄存器與特殊寄存器之間的
傳輸 59
3.3 數(shù)據(jù)運算指令 59
3.3.1 算術(shù)運算指令 60
3.3.2 邏輯運算指令 61
3.3.3 比較與測試指令 62
3.3.4 移位運算指令 62
3.4 數(shù)據(jù)轉(zhuǎn)換指令 63
3.4.1 數(shù)據(jù)擴展指令 63
3.4.2 數(shù)據(jù)反序指令 64
3.4.3 數(shù)據(jù)重組指令 64
3.4.4 位域處理指令 65
3.5 流程控制指令 65
3.5.1 跳轉(zhuǎn)指令 66
3.5.2 調(diào)用指令 69
3.6 異常處理指令 70
3.6.1 SVC指令 70
3.6.2 CPS指令 71
3.6.3 異常返回觸發(fā)指令 71
3.7 DSP處理指令 71
3.7.1 飽和運算指令 72
3.7.2 SIMD指令 72
3.7.3 乘與乘加指令 74
習(xí)題 76
第四章 程序設(shè)計 78
4.1 開發(fā)架構(gòu) 78
4.1.1 編程語言 78
4.1.2 程序的基本要素 79
4.1.3 匯編程序結(jié)構(gòu) 80
4.1.4 集成開發(fā)環(huán)境 83
4.1.5 啟動程序結(jié)構(gòu) 86
4.2 數(shù)據(jù)定義 87
4.2.1 常量 87
4.2.2 變量 88
4.2.3 數(shù)組變量 91
4.2.4 指針變量 92
4.2.5 結(jié)構(gòu)體變量 93
4.2.6 變量共用 94
4.3 數(shù)據(jù)處理 95
4.3.1 符號擴展加載 95
4.3.2 數(shù)據(jù)運算 96
4.3.3 運算數(shù)據(jù)存儲 97
4.4 流程結(jié)構(gòu) 97
4.4.1 分支結(jié)構(gòu) 97
4.4.2 循環(huán)結(jié)構(gòu) 102
4.5 函數(shù) 104
4.5.1 參數(shù)傳遞 105
4.5.2 局部變量分配 107
4.5.3 函數(shù)示例 108
4.6 混合編程 109
4.6.1 變量互用 109
4.6.2 函數(shù)互調(diào) 110
4.6.3 嵌入?yún)R編 111
4.6.4 內(nèi)聯(lián)匯編 111
4.7 異常處理 112
習(xí)題 115
第五章 片上微處理器系統(tǒng) 117
5.1 系統(tǒng)架構(gòu) 117
5.1.1 系統(tǒng)總線 118
5.1.2 存儲器系統(tǒng) 119
5.1.3 外設(shè)接口 120
5.1.4 中斷系統(tǒng) 122
5.1.5 直接存儲訪問器 122
5.2 典型外設(shè) 123
5.2.1 通用輸入/輸出 123
5.2.2 定時/計數(shù)設(shè)備 124
5.2.3 通信設(shè)備 125
5.2.4 模擬/數(shù)字轉(zhuǎn)換 129
5.3 Cortex-M4處理器 130
5.3.1 處理器結(jié)構(gòu) 130
5.3.2 處理器總線 131
5.3.3 系統(tǒng)異常與中斷 132
5.3.4 SysTick 136
5.4 STM32F4系統(tǒng)結(jié)構(gòu) 138
5.4.1 系統(tǒng)總線 138
5.4.2 系統(tǒng)時鐘 140
5.4.3 DMA系統(tǒng) 141
5.5 管腳配置 143
5.6 中斷系統(tǒng) 146
5.6.1 中斷源 146
5.6.2 EXTI 147
5.6.3 中斷程序設(shè)計示例 148
習(xí)題 149
第六章 常規(guī)外設(shè)應(yīng)用設(shè)計 151
6.1 平臺簡介 151
6.2 時鐘管理 153
6.3 通用輸入/輸出 155
6.3.1 GPIO寄存器組 155
6.3.2 GPIO應(yīng)用設(shè)計1 156
6.3.3 GPIO應(yīng)用設(shè)計2 158
6.4 外部中斷 160
6.4.1 EXTI寄存器 160
6.4.2 EXTI應(yīng)用設(shè)計 161
6.5 通用定時器 162
6.5.1 通用定時器的常用寄存器 162
6.5.2 定時器應(yīng)用設(shè)計1 164
6.5.3 定時器應(yīng)用設(shè)計2 166
6.6 通用同/異步收發(fā)器 168
6.6.1 USART寄存器配置 168
6.6.2 USART收發(fā)處理模式 169
6.6.3 USART輪詢模式應(yīng)用設(shè)計 170
6.6.4 USART中斷模式應(yīng)用設(shè)計 172
6.7 DMA控制器 174
6.7.1 DMAC寄存器 174
6.7.2 USART DMA模式應(yīng)用設(shè)計 176
6.7.3 存儲器之間DMA傳輸
應(yīng)用設(shè)計 178
6.8 模擬/數(shù)字轉(zhuǎn)換器 180
6.8.1 ADC寄存器配置 180
6.8.2 ADC應(yīng)用設(shè)計 181
習(xí)題 183
第七章 典型微控制系統(tǒng)設(shè)計開發(fā) 185
7.1 設(shè)計需求 185
7.2 電路設(shè)計 185
7.2.1 處理器電路 186
7.2.2 接口電路 189
7.2.3 電源電路 191
7.3 電路測試 192
7.4 驅(qū)動程序設(shè)計 193
7.4.1 數(shù)碼管顯示控制 193
7.4.2 溫度測量控制 195
7.4.3 按鈕控制 196
7.4.4 異步串口收發(fā)控制 197
7.4.5 電機驅(qū)動控制 199
7.4.6 時序控制 200
7.5 功能測試 202
7.5.1 測試平臺 202
7.5.2 單功能模塊測試 203
7.5.3 系統(tǒng)功能模塊測試 209
習(xí)題 211
附錄 C語言程序設(shè)計入門 212
參考文獻 230