《智能嵌入技術開發與實踐》針對內核為ARM Cortex-M3的Cypress FM3微處理器,介紹ARM Cortex-M3架構、原理和應用。FM3微處理器具有豐富的內部外圍資源,以此為基礎結合實驗例程由淺入深的講解智能嵌入式開發技術。其中包括:(1)基于通用IO口外部設備驅動;(2)多任務信號采集系統的實現;(3)UART多任務串行通訊接口工程設計;(4)USB與PC端數據通訊的實現;(5)CAN總線局域網設計與多任務信息通訊;(6)I2C總線通訊技術;(7)SPI總線通訊技術;(8)多功能定時技術器的應用等。軟件開發選擇μC/OS-II作為嵌入式操作系統,比較適合本科層次教學,因為μC/OS-II系統具備了內核小、實時性好、易于移植等特點,具有經典操作系統的多任務通訊與同步機制,和LINUX、Android、Window CE等相對復雜的內核相比,代碼容易理解和實現多任務程序設計。
(1)本書合理安排智能嵌入開發技術知識體系,結合嵌入式開發技術方向的先行課程和后續課程組織知識點與內容。(2)注重理論和實踐結合,融入嵌入式軟硬件開發過程和具有工程實踐背景的項目案例,體現“教、學、做”一體化,以學生為主體、能力訓練為目標,訓練學生的模塊設計理念和團隊合作精神。(3)采用易于獲得的實驗開發平臺,配套開發板采用USB供電,具有成本低、體積小、便于攜帶等特點,提高實驗設備的利用率。(4)本書提供配套課件、實驗案例的工程文件及源代碼,讀者可登錄清華大學出版社網站下載使用。
目錄
第1章嵌入式系統開發概述1
1.1嵌入式系統概述1
1.1.1嵌入式系統的定義1
1.1.2嵌入式系統的特點1
1.1.3嵌入式微處理器2
1.1.4嵌入式操作系統4
1.2嵌入式系統的組成9
1.2.1嵌入式系統的硬件基礎9
1.2.2板級支持包BSP/硬件抽象層HAL11
1.2.3嵌入式系統的軟件基礎12
1.3嵌入式系統開發現狀13
1.3.1簡單的嵌入式系統開發13
1.3.2基于實時操作系統的嵌入式系統開發14
1.3.3基于片上系統的嵌入式系統開發14
小結15
習題15
第2章ARM CortexM3微處理器16
2.1ARM CortexM3的內核結構16
2.1.1ARM微處理器的內核演變16
2.1.2ARM CortexM3內核特點17
2.1.3寄存器組19
2.2ARM CortexM3的操作模式21
2.2.1操作模式22
2.2.2特權級別22
2.3中斷和異常管理23
2.3.1概述23
2.3.2中斷向量表24
2.3.3異常類型28
2.3.4中斷控制29
2.4MB9BF506R微處理器簡介31
2.4.1MB9BF506R系統概要31
2.4.2總線架構34
2.4.3存儲器架構34
2.4.4MB9BF506R的外部總線接口39
2.4.5MB9BF506R的工作模式40
小結41
習題41
第3章嵌入式軟件開發基礎42
3.1CMSISCortex微控制器軟件接口標準42
3.1.1Cortex系列微處理器的數據類型42
3.1.2CMSIS架構42
3.1.3關于啟動代碼45
3.1.4CMSIS編碼規則46
3.1.5CMSIS支持的工具鏈46
3.2MB9BF506R的外設驅動庫47
3.2.1概述47
3.2.2例程的使用方法47
3.3在線編程52
3.3.1Flash在線編程的程序設計53
3.3.2程序的在線升級——BootLoader設計59
3.3.3燒寫程序到MCU內部Flash63
3.4系統的低功耗設計65
3.4.1影響系統功耗的因素及處理措施65
3.4.2MB9BF506R的低功耗工作模式67
小結70
習題71
第4章基于μC/OSⅡ的嵌入式軟件開發特點72
4.1μC/OSⅡ內核概述72
4.1.1μC/OSⅡ的任務72
4.1.2μC/OSⅡ的任務管理82
4.1.3μC/OSⅡ的時鐘節拍與時間管理86
4.1.4μC/OSⅡ的任務的通信與同步89
4.2實現μC/OSⅡ的移植102
4.2.1μC/OSⅡ移植的條件102
4.2.2μC/OSⅡ移植工作102
4.3基于μC/OSⅡ的多任務系統開發108
4.3.1μC/OSⅡ的配置108
4.3.2基于μC/OSⅡ的main函數設計110
4.3.3任務代碼的實現112
小結113
習題113
第5章嵌入式系統開發流程114
5.1硬件開發平臺114
5.1.1JX MB9BF506R開發板115
5.1.2開發板硬件配置115
5.2嵌入式系統開發環境118
5.2.1安裝IAR EmbeddedWorkbench開發環境118
5.2.2安裝JLink驅動程序118
5.3在IAR EWARM Workbench中使用JLink調試120
5.3.1程序包的目錄結構121
5.3.2打開現有工程進行調試121
5.3.3項目選項的設置123
小結131
習題131
第6章基于μC/OSⅡ的嵌入式系統實驗132
6.1流水燈控制132
6.1.1實驗目的132
6.1.2實驗內容132
6.1.3實驗原理及說明132
6.1.4相關初始化寄存器介紹133
6.1.5設備驅動程序介紹134
6.1.6程序設計135
6.1.7實驗步驟139
6.2點陣LCD顯示控制139
6.2.1實驗目的139
6.2.2實驗內容139
6.2.3實驗原理及說明139
6.2.4相關寄存器介紹143
6.2.5設備驅動程序介紹143
6.2.6程序設計145
6.2.7實驗步驟149
6.3基于消息郵箱機制的按鍵掃描和LED顯示控制149
6.3.1實驗目的149
6.3.2實驗內容149
6.3.3實驗原理及說明149
6.3.4相關初始化寄存器介紹151
6.3.5設備驅動程序介紹152
6.3.6程序設計154
6.3.7實驗步驟160
6.4基于消息隊列機制的溫濕度模擬數據采集及顯示160
6.4.1實驗目的160
6.4.2實驗內容160
6.4.3實驗原理及說明160
6.4.4A/D相關寄存器163
6.4.5設備驅動程序介紹163
6.4.6程序設計164
6.4.7實驗步驟169
6.5利用RS232串口實現與PC通信169
6.5.1實驗目的169
6.5.2實驗內容169
6.5.3實驗原理及說明170
6.5.4UART相關寄存器171
6.5.5設備驅動程序介紹173
6.5.6程序設計174
6.5.7實驗步驟177
6.6基于信號量機制的局域網CAN總線通信179
6.6.1實驗目的179
6.6.2實驗內容179
6.6.3實驗原理及說明179
6.6.4CAN的相關寄存器184
6.6.5CAN驅動程序介紹184
6.6.6程序設計190
6.6.7實驗步驟200
6.7USB Function實驗201
6.7.1實驗目的 201
6.7.2實驗內容201
6.7.3實驗原理及說明201
6.7.4USB Function相關寄存器203
6.7.5設備驅動程序介紹204
6.7.6程序設計205
6.7.7實驗步驟213
6.8USB HOST實驗214
6.8.1實驗目的214
6.8.2實驗內容214
6.8.3實驗原理及說明214
6.8.4USB HOST相關寄存器217
6.8.5設備驅動程序介紹218
6.8.6程序設計220
6.8.7實驗步驟223
6.9綜合實例——虛擬示波器224
6.9.1實驗目的224
6.9.2實驗內容224
6.9.3實驗原理及說明224
6.9.4相關初始化寄存器介紹225
6.9.5設備驅動程序介紹227
6.9.6程序設計230
6.9.7實驗步驟241
6.10綜合實例——多功能數據采集顯示系統241
6.10.1實驗目的241
6.10.2實驗內容241
6.10.3實驗原理及說明241
6.10.4實驗相關寄存器242
6.10.5設備驅動程序介紹243
6.10.6程序設計243
6.10.7實驗步驟251
第7章FM4應用擴展253
7.1FM4介紹253
7.2FM4 S6E2G系列開發套件概述255
7.2.1開發板概述255
7.2.2FM4 S6E2G系列開發套件的跳線設置255
7.3FM4 S6E2G系列開發套件硬件構成257
7.3.1FM4 S6E2G系列開發套件的原理257
7.4FM4 S6E2G系列開發套件的開發環境配置270
7.4.1軟件安裝270
7.4.2卸載軟件273
7.4.3測試操作273
7.5FM4 S6E2G系列開發套件的開發實訓275
7.5.1概述275
7.5.2實驗背景276
7.5.3實驗A: 使用PDL的ADC278
7.5.4實驗B: 不使用PDL的ADC282
7.5.5實驗測試285
小結286
習題286
參考文獻288
第5章嵌入式系統開發流程本章學習目標 熟悉嵌入式開發平臺: JX MB9BF506R開發板; 熟練使用嵌入式系統開發環境進行嵌入式系統開發; 熟悉基于JX MB9BF506R開發板進行嵌入式系統開發的軟硬件流程。本章介紹嵌入式開發系統環境的軟件以及硬件資源,介紹嵌入式開發平臺硬件的具體設置,最后介紹ARM CortexM3開發環境的安裝、配置和使用,為第6章的實踐教程做好準備工作。5.1硬件開發平臺圖5.1JX MB9BF506R開發板對于基于嵌入式OS的系統開發,初學者選擇合適的開發平臺很重要。如圖5.1所示,JX MB9BF506R開發板是基于Cypress公司的MB9BF506系列微處理器的全功能開發板,包含一塊128×64的點陣LCD,三個用戶LED,4個按鍵,兩個CAN通道,兩個UART通道,帶有I2C接口的RTC單元、Nand Flash等外圍資源,同時還支持IO口擴展,功能齊全且價格便宜,是應用開發的很好的平臺,也是初學者的首選。在軟件開發上,針對該開發板的微處理器(ARM CortexM3)移植了μC/OSⅡ 2.86操作系統內核,為用戶基于μC/OSⅡ進行軟件開發提供了良好的先決條件,并免費提供所有內部外圍設備的驅動庫源代碼和說明文檔,既使得軟件開發人員不必過多涉及底層硬件,又提高了開發效率。5.1.1JX MB9BF506R開發板JX MB9BF506R開發板具有如下特性。(1) CPU: MB9B506系列處理器ARM CortexM3TM,64KB SRAM內存,電壓(2.7~5.5V),工作頻率80MHz,包含定時器、16通道AD模塊、片上Flash、片上SRAM和各類通信接口。(2) 存儲器: 32M×8b NAND Flash。(3) UART: 兩個UART通道。(4) 顯示: 一塊128×64的點陣LCD。(5) 時鐘模塊: 高精度I2C接口的實時時鐘模塊(RX8025T)。(6) USB接口: USB主機接口(TypeA USB接口),USB 設備接口(TypeB USB接口)。(7) CAN接口: 兩個高速CAN通道。(8) 調試接口: 板上標準20針的JTAG接口。(9) 按鍵: 4個用戶按鍵,1個復位按鍵。(10) LED: 3個用戶LED。(11) 電壓: 5V和3.3V供電的電壓選擇。(12) 電位計: 可以調節AD輸入電壓。(13) 支持USB、JTAG和外部15V電源供電。第5章嵌入式系統開發流程5.1.2開發板硬件配置1. 開發板元件分布MB9BF506R開發板的硬件布局如圖5.2所示。圖5.2JX MB9BF506R開發板硬件布局2. 跳線列表JX MB9BF506R開發板上跳線設置如表5.1所示。表5.1跳線設置跳 線 名 稱功能設置J101~J103×1電源選擇短接 J101: 選擇外部15V電源供電J104×2電壓選擇短接 1,2: 5V短接 2,3: 3.3VJUSB-JUSB USB主機/設備選擇短接 1,2: USB 設備短接 2,3: USB 主機J105模式設定短接: 編程模式斷開: 標準模式J106晶振選擇短接 1,2: 當使用4MHz的晶振時短接 2,3: 當使用48MHz的晶振時J107P22連接短接: 連接 P22 (UART_TX0) 和MAX3232斷開: 斷開 P22 (UART_TX0) 和MAX3232J701分壓選擇短接: 當使用5V供電時斷開: 當使用3.3V供電時跳線設置時,需要注意以下兩點。(1) 不要同時短接J101~J103。當使用Keil ULink ME時,不能使用JTAG供電。(2) 當使用Keil ULink ME時, 只能選擇3.3V供電。3. UART在線編程的設置UART在線編程設置如表5.2所示。續表表5.2UART在線編程設置跳 線 名 稱功能設置UART0DB9接口通過RS232線,連接PCJ106晶振選擇斷開J105模式設定短接J107P22連接短接4. USB在線編程的設置