本書系統介紹了嵌入式系統的基本原理和物聯網應用開發的基礎知識。詳細講述了MCU應用相關的各種外設模塊的工作原理和編程結構,包括ARM Cortex-M4內核、ARMv7和RISC-V指令系統、MCU系統控制、存儲器、通用輸入輸出、定時器、模擬外設、通信接口等。同時,對嵌入式軟件設計方法、RTOS、物聯網技術及應用架構等做了闡述。後介紹了兩個基於阿裡云IoT平臺的物聯網應用開發示例,以及低功耗系統設計和電磁兼容性的基礎知識。
本書對嵌入式系統的基本原理和技術的描述具有通適性、不特別針對某個MCU。本書配套有完整的教學資源,包括教學課件、實驗PPT、MOOC資源,以及基於ST、TI、平頭哥等多種MCU開發板的配套實驗例程,方便師生選用。
本書可作為高等院校計算機、電子與通信、自動化、儀器儀表等專業嵌入式系統、物聯網、微機接口、單片機等課程的教材,也適合廣大從事MCU和物聯網應用系統開發的工程技術人員作為學習、參考用書。
《嵌入式系統原理與物聯網實踐》採用了整體系統貫穿與局部深度剖析相結合、共性機理歸納與設計示例分析相呼應的思路,力求系統、生動又深入淺出地闡述嵌入式系統技術涉及的體系結構、技術原理與設計方法,並在突出技術性、新穎性的同時,又注重內容的易讀性和實用性。
嵌入式應用幾乎無所不在,物聯網給嵌入式系統發展帶來巨大機遇。從某種角度上說,物聯網應用系統也可看作嵌入式系統的網絡應用,因為物聯網系統中的“物”,基本上都是指各種嵌入式設備,現在嵌入式系統進入了一個新的高速發展時期。
如今國內高校計算機專業開設的嵌入式系統方面的課程,大多是原來的“微機原理與接口”和“單片機原理與應用”這類課程教學內容的延續和更新。華東師範大學計算機系目前“嵌入式系統原理與實踐”這門課程就是原來“微機原理與接口”和“嵌入式系統引論”的延續、升級版。考慮到與計算機專業其他課程(如操作系統、編程語言、計算機網絡等)的內容銜接,這門課程的教學內容重點是嵌入式系統硬件接口方面的知識,以及具有嵌入式系統特點的軟件設計方法,包括嵌入式處理器、存儲器、I/O、RTOS、嵌入式應用編程和物聯網應用開發等。
嵌入式系統是一種計算機應用系統。作為本科生專業基礎課程,要抽象出一般嵌入式應用共性的知識和原理,這部分內容必須具有基礎、普適性,不強依賴於具體的芯片。然後再選擇某些有代表性的芯片作為實驗載體,加強對原理的理解,且有利於掌握應用設計方法。平衡好這兩個方面是嵌入式教學的一個難點,為此我們結合自己 20 多年嵌入式系統教學、科研項目開發經驗,逐步抽象出符合本學科專業教學要求的嵌入式系統處理器、存儲器、I/O 等相關基礎知識和原理,並以目前流行的 ARM Cortex-M4 開發板作為硬件實驗平臺。為了能在一塊開發板上完成大部分外設實驗(包括 ADC、DAC、模擬比較器 AC 等),教材給出的示例代碼是基於 STM32F303 和 HAL 庫的,實際也適用於其他 STM32 MCU。同時,我們也準備了針對多個芯片公司(TI、ST、Microchip、平頭哥等)主流開發板的實驗例程供學校選用。
嵌入式系統教學的另一個難點是動手實踐。現在學校專業課總課時受限,每周 2 課時的實驗只能讓學生做一些膚淺的驗證性實驗,無法做一些複雜、系統性的實驗。另一方面, 由於互聯網應用的興起,現在 IT 學科的學生普遍喜歡軟件類課程和互聯網應用開發,因為各種移動互聯網應用,如 Web、手機 App 應用開發更方便、有趣。為突破這個難題,提高學生對嵌入式系統的學習興趣,同時結合物聯網應用趨勢,把嵌入式系統和移動互聯網結合起來,我們開發了嵌入式物聯網“口袋”實驗系統,可在 Internet 上實現“人-云-物”的互動。該實驗系統具有以下特色。
(1)簡單。直接使用芯片公司的 MCU 開發板作為主控實驗板,自帶仿真器和虛擬串口,簡單、易購。外設擴展板採用口袋板形式(名片大小),人手一套,學生可在任何時間自行進行實驗。
(2)豐富。實驗內容豐富,可進行一般嵌入式系統課程要求的所有實驗內容。並帶有擴展接口和多種外設,可進行創新實驗、應用開發。
(3)有趣。擴展板帶有多種傳感器和 Wi-Fi 模塊,可實現物聯網教學、應用方案,可用手機 App 遠程操控設備。用杜邦線連接傳感器、Wi-Fi 模塊等,增強動手能力。
(4)真實。實驗系統均採用業界主流平臺。物聯網實驗方案採用阿裡云 IoT 平臺,安全、穩定、易擴展,可用於實際 IoT 產品和項目,所學即所用。
(5)完善。教材、課件 PPT、MOOC、作業、實驗例程等配套教學資源完善,拿來即 用,快速進行嵌入式和物聯網系統的教學和實驗。
隨著物聯網應用的發展,嵌入式軟件日趨複雜,需要針對應用趨勢,學習嵌入式、物聯網開發技術,包括 RTOS、物聯網 OS、IoT 云平臺、前後端技術等。對於一般嵌入式開發,本書介紹了 FreeRTOS;對於物聯網應用開發,本書簡單介紹了 AliOS Things 和阿裡云 IoT 平臺,並介紹了兩個物聯網應用開發示例。
考慮到書稿內容的完整性、不同學校教學的差異性以及讀者學習參考的便利,本書還補充了指令系統、嵌入式軟件設計方法、物聯網技術以及低功耗設計和電磁兼容性方面的基礎知識,盡量構建一個比較完整、基礎、容易入門的嵌入式系統原理和物聯網實踐教材,學校老師可以根據各自學科專業課設置的具體情況,選擇合適的內容、章節進行教學和實驗。
華東師範大學計算機系嵌入式系統實驗室長期重視產學研結合,與多家全球著名的半導體廠商(如 TI、Microchip、ST 等)和互聯網企業(如阿裡云 IoT、微軟 Azure 等)合作,在 MCU 和物聯網系統開發、推廣應用方面積累了豐富的經驗。本書內容也是在我們實驗室出版的前幾本嵌入式系統教材的基礎上修改完善,結合我們多年課程教學以及 MCU 和物聯網應用開發的積累和經驗,並經過了 3 屆學生的試用編寫整理而成的。
本書的出版,得到了華東師範大學教材基金、阿裡云產學協同項目和清華大學出版社的支持。參與本書編寫和資料整理、代碼驗證等工作的,還有華東師範大學計算機學院的張皓焱、王勝志、劉長箭、李曉敏、李奕霖、穆永超、曹強、李昌龍等。在此一並向上述單位、個人表示衷心的感謝。
由於時間倉促和水平所限,本書有些內容還不盡完善,不足之處也在所難免,懇請讀者批評指正,以便我們及時修正。
編 者
第 1 章 嵌入式系統與微控制器概述 1
1.1 嵌入式系統概述 1
1.1.1 嵌入式系統的發展 1
1.1.2 嵌入式系統的特點 2
1.1.3 嵌入式系統的組成 3
1.1.4 嵌入式系統的種類 5
1.1.5 嵌入式系統的調試方法 6
1.1.6 嵌入式系統的應用 11
1.2 嵌入式處理器概述 12
1.2.1 嵌入式處理器 12
1.2.2 嵌入式處理器的分類 13
1.2.3 典型 MCU 介紹 18
1.3 本章小結 25
1.4 習題 26
第 2 章 ARM Cortex-M 處理器27
2.1 ARM 處理器概述 27
2.2 ARM 處理器架構 28
2.2.1 ARM 體系結構版本 28
2.2.2 ARM 處理器 30
2.3 Cortex-M 處理器內核及功能介紹 32
2.4 ARM Cortex-M4 編程模型 37
2.4.1 處理器的工作模式和特權級別 37
2.4.2 ARM Cortex-M4 寄存器 38
2.4.3 ARM Cortex-M4 異常處理 41
2.5 本章小結 47
2.6 習題 47
第 3 章 指令系統 48
3.1 ARM 指令格式 48
3.2 條件碼 49
3.3 ARM 指令的尋址方式 50
3.4 ARMv7 架構指令集—Thumb-2 指令集 55
3.4.1 存儲器訪問指令 56
3.4.2 通用數據處理指令 60
3.4.3 乘法和除法指令 65
3.4.4 分支和分支控制指令 67
3.4.5 飽和運算指令 SSAT 和 USAT 69
3.4.6 位段操作指令 70
3.4.7 雜項指令 71
3.5 RISC-V 指令集簡介 75
3.5.1 RISC-V 寄存器 75
3.5.2 尋址方式和指令示例 76
3.5.3 RISC-V 標準模塊和指令使用 77
3.5.4 RISC-V 和其他指令集的比較 79
3.6 匯編程序設計 80
3.6.1 ARM 匯編語言格式規範 80
3.6.2 ARM 匯編語言編寫格式示例 82
3.7 本章小結 82
3.8 習題 83
第 4 章 系統控制 85
4.1 功能組件 85
4.1.1 復位控制 85
4.1.2 時鐘控制 89
4.1.3 電源管理 92
4.1.4 嵌套向量中斷控制器 93
4.1.5 DMA 控制器 98
4.2 初始化配置 104
4.3 操作實例 107
4.3.1 時鐘例程一 107
4.3.2 時鐘例程二 112
4.4 本章小結 114
4.5 習題 114
第 5 章 存儲器 116
5.1 存儲器分類 116
5.1.1 RAM 存儲器 116
5.1.2 ROM 存儲器 122
5.1.3 Flash 存儲器 124
5.1.4 鐵電存儲器 FRAM 129
5.1.5 存儲控制器 132
5.1.6 存儲器性能指標 136
5.2 微控制器存儲器系統 137
5.2.1 存儲器地址映射 137
5.2.2 位帶操作 139
5.2.3 存儲格式 140
5.3 操作示例 143
5.3.1 變量地址觀察例程 143
5.3.2 Flash 擦寫例程 145
5.4 本章小結 149
5.5 習題 149
第 6 章 基本外設 151
6.1 通用輸入/輸出端口(GPIO) 151
6.1.1 GPIO 簡介 151
6.1.2 GPIO 示例 154
6.1.3 初始化配置 155
6.1.4 操作實例 155
6.2 通用定時器/計數器 159
6.2.1 通用定時器簡介 159
6.2.2 定時器示例 161
6.2.3 初始化配置 163
6.2.4 操作實例 163
6.3 脈衝寬度調制(PWM) 167
6.3.1 PWM 簡介. 167
6.3.2 PWM 示例. 169
6.3.3 操作實例 170
6.4 看門狗定時器(WDT) 174
6.4.1 WDT 簡介 175
6.4.2 MCU 中的看門狗 175
6.4.3 操作實例 176
6.5 實時時鐘(RTC) 179
6.5.1 RTC 簡介 179
6.5.2 RTC 示例 180
6.5.3 操作實例 181
6.6 本章小結 186
6.7 習題 187
第 7 章 通信外設 188
7.1 數字通信系統概述 188
7.2 UART 接口 189
7.2.1 UART 簡介 189
7.2.2 波特率 193
7.2.3 UART 示例 193
7.2.4 初始化配置 195
7.2.5 操作實例 195
7.3 SPI 接口 198
7.3.1 SPI 簡介 198
7.3.2 SPI 示例 200
7.3.3 初始化配置 202
7.3.4 操作實例 202
7.4 I2C 接口 204
7.4.1 I2C 簡介 204
7.4.2 I2C 示例 209
7.4.3 初始化配置 210
7.4.4 操作實例 210
7.5 USB 接口 215
7.5.1 USB 接口概述 215
7.5.2 USB 數據傳輸方式 218
7.6 CAN 總線 220
7.7 本章小結 221
7.8 習題 222
第 8 章 模擬外設 223
8.1 模數轉換器(ADC) 223
8.1.1 ADC 簡介 223
8.1.2 ADC 性能指標 225
8.1.3 ADC 類型 226
8.1.4 初始化配置 231
8.1.5 ADC 示例 231
8.1.6 操作實例 233
8.2 模擬比較器(AC) 237
8.2.1 模擬比較器簡介 238
8.2.2 初始化配置 239
8.2.3 操作實例 240
8.3 數模轉換器(DAC) 242
8.3.1 DAC 簡介 242
8.3.2 DAC 類型 243
8.3.3 DAC 的技術指標 244
8.3.4 操作實例 244
8.4 本章小結 247
8.5 習題 248
第 9 章 嵌入式實時操作系統. 249
9.1 常用的嵌入式操作系統 249
9.2 RTOS 基礎 250
9.2.1 RTOS 的基本概念 251
9.2.2 使用 RTOS 的優勢 252
9.2.3 RTOS 的功能組成 254
9.3 FreeRTOS 258
9.3.1 FreeRTOS 的體系結構 259
9.3.2 FreeRTOS 的任務調度機制 259
9.3.3 FreeRTOS 的任務管理 262
9.3.4 FreeRTOS 任務通信機制 264
9.3.5 FreeRTOS 任務同步機制 264
9.3.6 FreeRTOS 移植到微控制器的方法 265
9.3.7 Amazon FreeRTOS 265
9.4 本章小結 265
9.5 習題 266
第 10 章 嵌入式軟件設計 267
10.1 嵌入式系統軟件組成 267
10.1.1 嵌入式系統軟件架構 267
10.1.2 初始化引導程序 BootLoader 268
10.1.3 板級支持包 BSP 269
10.1.4 設備驅動程序 271
10.1.5 庫函數 271
10.2. 無 OS 的嵌入式軟件設計方法 272
10.2.1 前後臺系統 272
10.2.2 中斷(事件)驅動系統 272
10.2.3 巡回服務系統 273
10.2.4 基於定時器的巡回服務系統 275
10.3 基於 RTOS 的嵌入式軟件設計方法 275
10.3.1 FreeRTOS 的任務創建及刪除示例 275
10.3.2 FreeRTOS 的任務通信示例 280
10.3.3 FreeRTOS 的任務同步(二進制信號量)示例 285
10.3.4 FreeRTOS 軟件定時器示例 290
10.4 基於 Linux 的嵌入式軟件設計方法 292
10.5 本章小結 295
10.6 習題 295
第 11 章 物聯網技術 297
11.1 物聯網概述 297
11.1.1 技術及應用框架 298
11.1.2 相關技術 299
11.2 無線通信技術 300
11.2.1 NFC 300
11.2.2 ZigBee 301
11.2.3 BLE 302
11.2.4 Wi-Fi 303
11.2.5 LoRa 304
11.2.6 NB-IoT 305
11.2.7 無線通信技術比較 306
11.3 終端技術 306
11.3.1 Android 系統 307
11.3.2 iOS 系統 308
11.3.3 Web 和 HTML 技術 309
11.4 服務器和云計算 310
11.4.1 獨立服務器和云主機 310
11.4.2 云計算 311
11.5 開發平臺和操作系統 312
11.5.1 IoT 開發平臺 312
11.5.2 IoT 操作系統 313
11.6 MQTT 概述 315
11.6.1 MQTT 特點 315
11.6.2 MQTT 協議原理 316
11.7 物聯網系統應用開發 317
11.7.1 基於單點服務器的物聯網系統 318
11.7.2 基於物聯網接入平臺的物聯網系統 318
11.7.3 基於物聯網應用平臺的物聯網系統 320
11.8 設備聯網方式 321
11.9 本章小結 322
11.10 習題 322
第 12 章 物聯網開發實踐 324
12.1 實驗環境 324
12.2 物聯網實驗一 325
12.2.1 實驗流程 327
12.2.2 阿裡云物聯網平臺操作 327
12.2.3 設備端操作 340
12.2.4 實驗現象與結果 344
12.2.5 設備端程序流程圖 349
12.3 物聯網實驗二 350
12.3.1 實驗流程 351
12.3.2 物聯網應用開發平臺配置 351
12.3.3 設備端配置 359
12.3.4 應用端操作 362
12.3.5 設備端實驗流程圖 366
12.4 本章小結 367
12.5 習題 367
第 13 章 低功耗與電磁兼容 368
13.1 低功耗設計方法 368
13.1.1 利用 I/O 引腳為外部器件供電 368
13.1.2 電源管理單元的設計 369
13.1.3 動態改變 CPU 的時鐘頻率 369
13.1.4 軟件系統的低功耗設計 370
13.2 電源設計 372
13.2.1 電池的選擇 373
13.2.2 超低靜態電流 LDO 376
13.2.3 直流/直流轉換器 377
13.3 電磁兼容性 378
13.3.1 電磁干擾的形成 378
13.3.2 電磁兼容常用元器件 380
13.3.3 電磁兼容常用技巧 381
13.4 本章小結 384
13.5 習題 384
參考文獻 386
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。