嵌入式系統實戰指南:面向 IoT 應用
內容描述
本書的出發點是嵌入式系統的實際應用,因此涉及面比較廣,
為了控制篇幅,很多內容點到為止,但可以起到拋磚引玉的作用。
本書首先對嵌入式系統做了定義,然後圍繞該定義展開。
全書分為三篇,
第壹篇側重於基礎應用知識;
第二篇是基於第壹篇的高階應用知識,主要針對嵌入式操作系統;
第三篇相對獨立,對目前非常流行的低功耗藍牙原理和應用做了介紹。
本書的每一篇都有多個對應的例程,並使用了多種常見的軟硬件。
本書不但適合嵌入式系統行業的職場新手,也適合有一定經驗的嵌入式系統研發工程師學習和參考,
還可以作為自動控制、通信、應用電子、機電一體化等專業的教學用書。
目錄大綱
前言
篇 核心篇
章 麻雀雖小,五臟俱全——什麼是嵌入式系統2
1.1 嵌入式系統架構3
1.2 MCU架構4
1.3 內核架構7
第2章 大腦是人類與動物的主要區別所在——單片機架構9
2.1 計算機的發展9
2.2 單片機只能理解二進制“語言”11
2.3 輸入/輸出設備12
2.4 什麼是總線13
2.5 數字電路大廈的磚塊——鎖存器15
第3章 象形文字的出現——彙編語言18
3.1 為何要了解彙編語言18
3.2 寄存器介紹18
3.3 什麼是棧19
3.4 與棧的使用相關的四大原則22
3.5 其他內核寄存器23
3.6 常用彙編指令25
第4章 五臟六腑——單片機外圍26
4.1 時鐘——單片機的心臟26
4.2 標配外圍1——Timer27
4.3 標配外圍2——I2C總線接口29
4.4 標配外圍3——UART/USART接口32
4.5 標配外圍4——SPI33
4.6 標配外圍5——DMA控制器36
4.7 標配外圍6——GPIO37
4.8 擴展外圍1——I2S控制器38
4.9 擴展外圍2——USB控制器40
4.10 擴展外圍3——以太網控制器42
4.11 擴展外圍4——CAN控制器43
第5章 單片機開發環境44
5.1 開發環境安裝44
5.2 認識學習板50
5.3 下載和調試53
第6章 大腦怎麼思考——單片機如何運行57
6.1 從分析編譯錯誤開始57
6.2 從彙編文件中探索59
第7章 現代語言的產生—— C語言70
7.1 解決編譯錯誤71
7.2 複習一下C語言77
7.3 指針、結構體和鍊錶80
第8章 Hello, World! 95
8.1 單片機怎麼實現printf95
8.2 串口的使用97
第9章 中斷99
9.1 中斷是事件驅動的核心99
9.2 異常和中斷99
9.3 按鍵中斷102
目 錄嵌入式系統實戰指南:面向IoT應用0章 I2C總線實驗107
10.1 看一下原理圖107
10.2 看一下數據手冊108
10.3 準備一個新的工程112
10.4 開始工作115
1章 其他總線實驗131
11.1 SPIM之分散加載實驗131
11.2 SPI總線實驗137
11.3 USB總線實驗144
2章 DAC原理和實踐154
12.1 DAC原理154
12.2 DAC實驗155
3章 ADC原理和實踐162
13.1 逐次逼近型ADC原理163
13.2 ADC實驗164
4章 什麼是傅里葉變換170
14.1 複變函數170
14.2 傅里葉級數171
14.3 傅里葉變換173
14.4 快速傅里葉變換175
5章 傅里葉變換的C語言實現180
15.1 程序解析181
15.2 測試和分析188
6章 印製電路板設計(PCB Layout)193
16.1 硬件設計從熟悉器件開始194
16.2 開始畫板子196
第二篇 RTOS(實時操作系統)
7章 人類吃了智慧果後做的件事是用樹葉做了件衣服——RTOS原理241
17.1 RTOS的發展241
17.2 RTOS的基本原理242
8章 巧婦難為無米之炊——RT-Thread環境搭建245
18.1 工具軟件準備245
18.2 編譯工程251
18.3 調試工程253
9章 障眼法——RTOS如何實現分身術256
19.1 線程調度256
19.2 創建用戶線程261
第20章 三頭六臂——一起做幾個多線程的例程264
20.1 創建三個線程264
20.2 如何觀察線程調度情況267
第21章 團結就是力量——線程之間的同步和通信270
21.1 線程同步270
21.2 線程通信274
第22章 開始燒腦——RTOS實踐案例278
22.1 互斥量測試279
22.2 消息隊列和郵箱測試283
第23章 節約是美德——內存管理288
23.1 內存堆管理289
23.2 內存池管理292
23.3 內存堆與內存池的區別293
23.4 動態內存分配實踐293
第24章 家中有糧,心裡不慌——中斷管理296
24.1 運行模式和棧296
24.2 RTT中斷處理過程297
24.3 RTT按鍵中斷處理實例299
第25章 乾坤大挪移——內核移植304
25.1 線程調度的原理304
25.2 移植相關內容306
第26章 工欲善其事,必先利其器——Env輔助開發環境和FinSH控制台320
26.1 獲取和配置320
26.2 使用和理解FinSH324
第27章 個人的一小步,人類的一大步——I/O設備管理330
27.1 I/O設備管理框架330
27.2 串口設備的管理332
27.3 GPIO的管理341
27.4 SPI設備管理344
27.5 I2C設備管理350
27.6 硬件Timer的使用353
第28章 一人之下,萬人之上——虛擬文件系統356
28.1 RTT文件系統介紹356
28.2 文件系統的掛載357
28.3 格式化359
28.4 實驗361
第29章 萬物互聯——網絡框架367
29.1 RTT網絡框架367
29.2 網絡套接字371
29.3 套接字編程實例375
第三篇 BLE(低功耗藍牙)
第30章 藍牙初探380
30.1 藍牙技術聯盟381
30.2 歷史版本382
30.3 歷史版本更新383
30.4 常用無線協議比較394
第31章 BLE協議棧初探398
31.1 定義398
31.2 作用398
31.3 傳播媒介399
31.4 傳輸單位399
31.5 結構399
第32章 物理層(Physical Layer,PHY)403
32.1 PHY403
32.2 頻段(Band)403
32.3 頻道(Channel)404
32.4 射頻公差(Radio Frequency Tolerance)404
32.5 發射功率(TransmissioPower)404
32.6 接收靈敏度(Receive Sensitivity)405
第33章 直接測試模式(Direct Test Mode,DTM)406
33.1 重要性406
33.2 使用方法411
33.3 測試項目412
33.4 實際問題413
第34章 鏈路層(Link Layer,LL)415
34.1 BLE設備地址(Device Address)415
34.2 物理頻道(Physical Channel)417
34.3 狀態(State)419
34.4 空中接口包(Air Interface Packet)格式420
34.5 Advertising Physical Channel PDU423
34.6 廣播事件(Advertising Event)429
34.7 建立連接(ConnectioSetup)435
34.8 Data Physical Channel PDU437
34.9 連接事件(ConnectioEvent)440
34.10 連接參數(ConnectioParameter)441
第35章 主機控制器接口(Host Controller Interface,HCI)447
第36章 邏輯鏈路控制與適配協議(Logical Link Control and AdaptatioProtocol,
L2CAP)449
第37章 通用屬性配置(Generic Attribute Profile,GATT)與屬性協議
(Attribute Protocol,ATT)451
37.1 Server與Client451
37.2 配置文件(Profile)與屬性(Attribute)452
第38章 安全管理(Security Manager,SM)463
38.1 被動竊聽與主動竊聽463
38.2 密鑰(Key)與編碼(Encryption)464
38.3 配對(Pairing)465
第39章 通用訪問配置(Generic Access Profile,GAP)475
39.1 角色(Role)476
39.2 設備地址(Device Address)與設備名稱(Device Name)477
39.3 廣播數據包格式477
39.4 發現模式與程序(Discovery Modes and Procedures)477
39.5 安全模式(Security Mode)478
第40章 BLE編程實例479
40.1 設備系統架構479
40.2 硬件480
40.3 軟件480
40.4 準備工作480
40.5 編程實例484
40.6 習題500