Cortex-M3開發技術及實踐

Cortex-M3開發技術及實踐

《Cortex-M3開發技術及實踐》是2014年西安電子科技大學出版社出版的圖書,作者是青島東合信息技術有限公司。

基本介紹

  • 書名:Cortex-M3開發技術及實踐
  • 作者:青島東合信息技術有限公司
  • ISBN:978-7-5606-3121-9
  • 定價:58.65元
  • 出版社:西安電子科技大學出版社
  • 出版時間:2014-10
內容簡介,目錄,

內容簡介

全書以Cortex-M3核心的STM32F107晶片為基礎,以“Cortex開發套件”為硬體開發平台,以MDK-ARM為軟體開發環境,基於STM32固件庫的編程方法,講解了STM32F107的各種常用外設的工作原理及套用,並特別介紹了LWIP、?C/GUI、?C/OS-Ⅱ的應用程式設計。
全書分為兩篇:理論篇和實踐篇。理論篇共有16章,包括概述、STM32F107核心架構、GPIO和AFIO、NVIC和EXTI、定時器(TIM)、看門狗(WDG)、通用同步/異步收發器(USART)、直接存儲器訪問(DMA)、控制器區域網路(CAN)、ADC和DAC、串列外設接口(SPI)、通用串列匯流排(USB)、乙太網(ETH)、嵌入式界面(?C/GUI)、嵌入式作業系統(?C/OS-Ⅱ)和物聯網網關程式設計。實踐篇共有16個實踐,分別與理論篇的16章內容相對應,包括套用案例和知識拓展等內容。
本書偏重STM32F107的套用,採用理論與實踐相結合的方法,使Cortex-M3技術運用於實踐中,更深層地剖析了ARM技術與各種相關技術的關係,為物聯網的學習奠定了基礎。
本書適應面廣,可作為物聯網工程、通信工程、電子信息工程、自動化、計算機科學與技術、計算機網路等專業本科生教材

目錄

理論篇
第1章 概述 2
本章目標 2
學習導航 2
任務描述 2
1.1 ARM體系概述 2
1.1.1 ARM簡介 3
1.1.2 ARM架構的發展 3
1.2 Cortex核心 5
1.2.1 Cortex核心分類 5
1.2.2 CM3核心特點 6
1.3 CM3指令集 6
1.3.1 Thumb指令集 6
1.3.2 Thumb-2指令集 7
1.4 STM32系列MCU 7
1.4.1 STM32系列MCU分類 8
1.4.2 STM32F107資源 9
1.5 STM32固件庫 11
1.5.1 CMSIS含義 11
1.5.2 STM32固件庫簡介 12
1.5.3 STM32固件庫結構 12
1.5.4 固件庫命名規則 13
1.5.5 基於固件庫的STM32F107程式設計 14
1.6 開發工具 17
1.6.1 STM32F107開發工具介紹 17
1.6.2 流水燈示例 18
小結 23
練習 23
第2章 STM32F107核心架構 24
本章目標 24
學習導航 24
任務描述 24
2.1 核心架構 25
2.1.1 CM3核心架構 25
2.1.2 STM32F107架構 26
2.2 存儲器組織 27
2.3 存儲器映像 29
2.3.1 位帶操作 31
2.3.2 位帶計算方法 31
2.4 暫存器組 33
2.4.1 通用暫存器 33
2.4.2 特殊功能暫存器 34
2.5 堆疊 34
2.5.1 CM3的堆疊 34
2.5.2 雙堆疊機制 35
2.6 電源管理 35
2.6.1 電源 35
2.6.2 備份區域 37
2.6.3 電源管理器 39
2.6.4 低功耗模式 41
2.7 復位和啟動配置 41
2.7.1 CM3的復位機制 42
2.7.2 RCC 43
2.7.3 STM32F107的啟動配置 46
2.8 時鐘 47
2.8.1 時鐘概述 47
2.8.2 系統時鐘 49
2.8.3 時鐘安全系統 49
2.8.4 RTC時鐘 49
2.8.5 時鐘輸出 49
小結 50
練習 50
第3章 GPIO和AFIO 52
本章目標 52
學習導航 52
任務描述 52
3.1 通用IO和復用功能 53
3.1.1 GPIO概述 53
3.1.2 輸入功能 54
3.1.3 輸出功能 55
3.1.4 復用功能 56
3.1.5 模擬輸入功能 56
3.2 復用功能IO重映射 57
3.3 GPIO編程實例 58
3.3.1 GPIO配置 59
3.3.2 GPIO實例 61
3.4 GPIO庫函式 62
小結 63
練習 64
第4章 NVIC和EXTI 65
本章目標 65
學習導航 65
任務描述 65
4.1 CM3異常和中斷系統 66
4.1.1 嵌套向量中斷控制器 66
4.1.2 中斷優先權 66
4.1.3 搶占優先權與從優先權 67
4.1.4 中斷輸入與懸起 67
4.1.5 中斷回響序列 68
4.1.6 中斷返回 69
4.1.7 中斷嵌套 69
4.1.8 CM3特殊中斷機制 69
4.1.9 SysTick定時器 69
4.2 中斷向量 70
4.2.1 (異常)向量表 70
4.2.2 stm32f10x_it.c檔案 78
4.3 NVIC庫函式配置 80
4.3.1 NVIC配置 80
4.3.2 NVIC庫函式 84
4.4 外部中斷/事件控制器 85
4.4.1 功能說明 85
4.4.2 外部中斷/事件線路映像 86
4.5 EXTI庫函式配置 88
4.5.1 EXTI配置 88
4.5.2 EXTI庫函式 90
4.6 中斷套用實例 91
4.6.1 main函式 91
4.6.2 中斷服務函式 93
4.6.3 程式驗證 94
小結 94
練習 94
第5章 定時器(TIM) 96
本章目標 96
學習導航 96
任務描述 96
5.1 STM32F107定時器概述 97
5.2 高級和通用定時器 97
5.2.1 主要特性 98
5.2.2 時鐘源 98
5.2.3 時基單元 99
5.3 計數模式 100
5.3.1 計數模式工作方式 101
5.3.2 計數模式時序 101
5.3.3 計數模式配置 102
5.3.4 庫函式TIM_TimeBaseInit( ) 103
5.4 捕獲/比較通道 104
5.5 輸出模式 105
5.5.1 PWM模式 105
5.5.2 PWM模式配置 106
5.5.3 輸出比較模式 110
5.5.4 單脈衝模式 111
5.6 輸入模式 111
5.6.1 輸入捕獲模式 111
5.6.2 PWM輸入模式 114
5.6.3 定時器輸入異或功能 115
5.6.4 TIMx定時器和外部觸發的同步 115
5.6.5 定時器同步 115
5.7 電機控制 116
5.7.1 互補輸出和死區插入 116
5.7.2 使用剎車功能 116
5.7.3 產生六步PWM輸出 116
5.7.4 與霍爾感測器的接口 116
5.8 基本定時器TIM6和TIM7 117
5.8.1 主要特性 117
5.8.2 時鐘源 117
5.8.3 時基單元 117
5.8.4 預分頻器 118
5.8.5 計數模式 118
5.9 定時器庫函式 118
?小結 122
練習 123
第6章 看門狗(WDG) 124
本章目標 124
學習導航 124
任務描述 124
6.1 看門狗概述 125
6.2 獨立看門狗 125
6.2.1 IWDG的功能描述 125
6.2.2 IWDG的配置 127
6.2.3 IWDG庫函式 128
6.3 視窗看門狗 128
6.3.1 WWDG的功能描述 128
6.3.2 WWDG的配置 130
6.3.3 WWDG庫函式 131
小結 131
練習 132
第7章 通用同步/異步收發器(USART) 133
本章目標 133
學習導航 133
任務描述 133
7.1 USART的功能描述 134
7.1.1 USART的主要特性 134
7.1.2 STM32F107的USART 134
7.2 USART異步模式 136
7.2.1 分數波特率 136
7.2.2 數據位和校驗位 138
7.2.3 傳送器 138
7.2.4 接收器 139
7.2.5 DMA傳輸 139
7.2.6 中斷請求 139
7.2.7 異步模式配置 140
7.3 USART同步模式 142
7.4 LIN模式 144
7.5 USART編程實例 145
7.5.1 USART2管腳配置 145
7.5.2 USART2配置 146
7.5.3 USART實例 147
7.6 USART庫函式 148
小結 150
練習 150
第8章 直接存儲器訪問(DMA) 151
本章目標 151
學習導航 151
任務描述 151
8.1 DMA的功能描述 152
8.1.1 DMA的結構及特性 152
8.1.2 DMA通道 153
8.1.3 DMA傳送 154
8.1.4 仲裁器和優先權 154
8.1.5 循環模式 154
8.1.6 存儲器到存儲器模式 155
8.1.7 DMA中斷 155
8.1.8 指針增量 155
8.2 DMA編程實例 155
8.2.1 DMA配置步驟 155
8.2.2 DMA配置 156
8.2.3 DMA實例 159
8.3 DMA庫函式 164
小結 164
練習 165
第9章 控制器區域網路(CAN) 166
本章目標 166
學習導航 166
任務描述 166
9.1 CAN匯流排 167
9.1.1 CAN匯流排簡介 167
9.1.2 CAN匯流排技術規範 168
9.1.3 CAN幀 169
9.1.4 匯流排仲裁 171
9.2 STM32F107的bxCAN 172
9.2.1 bxCAN的工作模式 172
9.2.2 bxCAN的調試模式 173
9.2.3 出錯管理 174
9.2.4 離線恢復 175
9.2.5 位時間特性 175
9.2.6 波特率的計算 176
9.2.7 bxCAN配置 176
9.3 傳送處理 179
9.3.1 傳送優先權 179
9.3.2 中止 179
9.3.3 禁止自動重傳模式 179
9.3.4 傳送配置 180
9.4 接收管理 181
9.4.1 有效報文 181
9.4.2 FIFO管理 181
9.4.3 溢出 182
9.4.4 接收相關的中斷 182
9.4.5 接收配置 182
9.5 bxCAN標識符過濾 183
9.5.1 bxCAN過濾器組 183
9.5.2 過濾器組的配置 185
9.6 bxCAN中斷 187
9.7 bxCAN編程實例 188
9.7.1 主函式 188
9.7.2 中斷服務函式 191
9.7.3 運行結果 191
9.8 bxCAN庫函式 193
小結 194
練習 194
第10章 ADC和DAC 195
本章目標 195
學習導航 195
任務描述 195
10.1 模擬/數字轉換器(ADC) 196
10.1.1 ADC功能簡介 196
10.1.2 ADC管腳分布和輸入源 197
10.1.3 通道選擇 199
10.1.4 ADC中斷 199
10.1.5 DMA請求 199
10.1.6 模擬看門狗 200
10.2 ADC的工作模式 200
10.2.1 轉換模式 201
10.2.2 掃描模式 201
10.2.3 間斷模式 201
10.2.4 注入通道管理 201
10.2.5 數據對齊 202
10.2.6 通道採樣時間 202
10.2.7 外部觸發轉換 203
10.3 ADC編程實例 203
10.3.1 ADC配置 203
10.3.2 ADC實例 207
10.4 雙ADC模式 208
10.4.1 同步注入模式 209
10.4.2 同步規則模式 209
10.4.3 快速交叉模式 209
10.4.4 慢速交叉模式 209
10.4.5 交替觸發模式 210
10.4.6 同步注入模式+同步規則模式 210
10.4.7 同步規則模式+交替觸發模式 210
10.4.8 同步注入模式+交叉模式 210
10.5 數字/模擬轉換器(DAC) 211
10.5.1 DAC功能簡介 211
10.5.2 DAC轉換 212
10.5.3 DAC輸出電壓 212
10.5.4 DAC數據格式 212
10.5.5 選擇DAC觸發 213
10.5.6 DMA請求 213
10.6 DAC輸出模式 214
10.6.1 噪聲生成 214
10.6.2 三角波生成 214
10.7 DAC編程實例 214
10.7.1 DAC配置 214
10.7.2 DAC實例 217
小結 218
練習 219
第11章 串列外設接口(SPI) 220
本章目標 220
學習導航 220
任務描述 220
11.1 SPI簡介 221
11.2 SPI的功能和特點 221
11.3 SPI管腳 222
11.4 SPI的數據傳送與接收 222
11.4.1 接收與傳送緩衝器 223
11.4.2 主模式下的數據傳輸 223
11.4.3 從模式下的數據傳輸 223
11.4.4 處理數據的傳送與接收 224
11.5 SPI時鐘信號的相位和極性 224
11.6 SPI的從設備選擇 225
11.7 CRC計算 225
11.8 SPI的DMA 226
11.9 SPI中斷 227
11.10 SPI編程實例 227
11.10.1 SPI配置 227
11.10.2 SPI實例 231
小結 237
練習 238
第12章 通用串列匯流排(USB) 239
本章目標 239
學習導航 239
任務描述 239
12.1 USB簡介 240
12.1.1 USB版本 240
12.1.2 USB接口 241
12.1.3 匯流排結構 241
12.1.4 USB接口HID設備 242
12.1.5 USB OTG 243
12.2 USB協定基礎 243
12.2.1 USB邏輯組織 243
12.2.2 包 244
12.2.3 事務 246
12.2.4 描述符 247
12.2.5 枚舉 249
12.3 STM32F107的USB OTG 249
12.3.1 通用功能 250
12.3.2 OTG全速控制器 251
12.3.3 全速OTG PHY(物理接口) 251
12.3.4 ID信號檢測 252
12.3.5 上電狀態 252
12.3.6 軟體斷開 252
12.3.7 默認狀態 253
12.3.8 掛起狀態 253
12.3.9 設備端點 253
12.3.10 端點配置 254
12.3.11 端點傳輸 254
12.3.12 端點狀態/中斷 254
12.3.13 設備SOF 255
12.3.14 供電選項 255
12.3.15 USB數據FIFO 256
12.3.16 OTG_FS 中斷 256
12.4 USB OTG固件庫 256
12.4.1 ST USB固件庫的文檔結構 256
12.4.2 USB開發模板 258
12.5 HID類設備開發模板 260
12.5.1 開發模板修改 260
12.5.2 主要函式 261
小結 263
練習 264
第13章 乙太網(ETH) 265
本章目標 265
學習導航 265
任務描述 265
13.1 ETH簡介 266
13.1.1 乙太網物理層 266
13.1.2 乙太網的工作方式 267
13.1.3 幀結構 267
13.1.4 衝突/衝突域 268
13.1.5 IEEE 802.3 268
13.1.6 IEEE 1588 268
13.2 STM32F107的ETH 269
13.2.1 MAC控制器的功能 269
13.2.2 DMA功能 270
13.2.3 PTP 功能 271
13.2.4 乙太網模組的管腳和內部信號 271
13.2.5 乙太網模組功能描述:RMII 272
13.2.6 乙太網模組功能描述:MAC 802.3 273
13.2.7 MAC中斷 273
13.2.8 精確時間協定(IEEE 1588 PTP) 274
13.2.9 乙太網功能描述:DMA控制器操作 274
13.3 LWIP協定棧 274
13.3.1 LWIP的特性 275
13.3.2 LWIP的結構 275
13.4 建立ETH模板 275
13.4.1 官方ETH固件庫 276
13.4.2 修改ETH固件庫 276
小結 282
練習 282
第14章 嵌入式界面(?C/GUI) 283
本章目標 283
學習導航 283
任務描述 283
14.1 ?C/GUI簡介 284
14.1.1 ?C/GUI特點 284
14.1.2 ?C/GUI檔案結構 285
14.1.3 ?C/GUI層次結構 286
14.2 ?C/GUI功能 286
14.2.1 文本顯示 287
14.2.2 數值顯示 288
14.2.3 2-D圖形庫 288
14.2.4 字型 290
14.2.5 顏色 290
14.2.6 存儲設備 292
14.2.7 視窗管理器 292
14.2.8 視窗對象 294
14.2.9 對話框 303
14.3 ?C/GUI移植 305
小結 308
練習 308
第15章 嵌入式作業系統(μC/OS-Ⅱ) 309
本章目標 309
學習導航 309
任務描述 309
15.1 嵌入式系統程式設計 310
15.1.1 嵌入式系統程式設計特點 310
15.1.2 嵌入式系統程式結構 311
15.1.3 模組化程式設計 312
15.1.4 嵌入式作業系統 312
15.2 μC/OS-Ⅱ簡介 313
15.3 μC/OS-Ⅱ的時鐘和中斷 314
15.3.1 μC/OS-Ⅱ的時鐘 315
15.3.2 μC/OS-Ⅱ的時間管理 315
15.3.3 臨界段 316
15.3.4 μC/OS-Ⅱ的中斷過程 316
15.4 μC/OS-Ⅱ的任務 317
15.4.1 任務 317
15.4.2 任務的優先權 318
15.4.3 任務的狀態 319
15.4.4 任務堆疊 319
15.4.5 任務控制塊 320
15.4.6 任務調度 320
15.4.7 任務建立 320
15.5 μC/OS-Ⅱ任務的同步與通信 322
15.5.1 任務間的同步 322
15.5.2 事件 323
15.5.3 信號量 323
15.5.4 互斥型信號量 326
15.5.5 訊息信箱 327
15.5.6 訊息佇列 330
15.5.7 信號量集 330
15.6 μC/OS-Ⅱ記憶體管理 331
15.7 μC/OS-Ⅱ的裁剪 331
小結 332
練習 333
第16章 物聯網網關程式設計 334
本章目標 334
學習導航 334
任務描述 334
16.1 物聯網網關 335
16.1.1 物聯網 335
16.1.2 網關 335
16.1.3 物聯網網關 335
16.1.4 Zigbee無線感測網 336
16.2 網關功能設計 337
16.2.1 CC2530模組 337
16.2.2 網關協定轉換 337
16.2.3 Zigbee通信協定 337
16.2.4 網關功能設計 338
16.3 網關界面設計 338
16.3.1 網關界面資源表 338
16.3.2 回調函式 339
16.4 網關任務設計 341
16.4.1 網關任務 342
16.4.2 任務間同步 346
16.5 網關中斷設計 347
16.6 網關實例 349
16.6.1 主函式編寫 349
16.6.2 網關軟體界面 352
16.6.3 網關串口輸出 353
小結 353
練習 354
實踐篇
實踐1 概述 356
實踐指導 356
實踐1.G.1 356
?實踐1.G.2 359
?實踐1.G.3 360
?實踐1.G.4 362
知識拓展 368
實踐2 STM32F107核心架構 372
?實踐指導 372
實踐2.G.1 372
?實踐2.G.2 373
?實踐2.G.3 375
?實踐2.G.4 381
知識拓展 384
實踐3 通用GPIO和復用AFIO 388
?實踐指導 388
?實踐3.G.1 388
知識拓展 391
實踐4 NVIC和EXTI 393
?實踐指導 393
?實踐4.G.1 393
?實踐4.G.2 396
?實踐4.G.3 399
知識拓展 405
實踐5 定時器(TIM) 407
?實踐指導 407
實踐5.G.1 407
?實踐5.G.2 410
?實踐5.G.3 414
實踐6 看門狗(DWG) 418
?實踐指導 418
實踐6.G.1 418
?實踐6.G.2 420
實踐7 通用同步/異步收發器(USART) 424
?實踐指導 424
實踐7.G.1 424
?實踐7.G.2 426
實踐8 直接存儲器訪問(DMA) 429
?實踐指導 429
實踐8.G.1 429
實踐9 控制區域網路(CAN) 432
?實踐指導 432
實踐9.G.1 432
?實踐9.G.2 433
實踐10 ADC和DAC 442
?實踐指導 442
?實踐10.G.1 442
?實踐10.G.2 443
實踐11 串列外設接口(SPI) 449
?實踐指導 449
?實踐11.G.1 449
?實踐11.G.2 450
實踐12 通用串列匯流排(USB) 453
?實踐指導 453
?實踐12.G.1 453
?實踐12.G.2 454
實踐13 乙太網(ETH) 466
?實踐指導 466
?實踐13.G.1 466
?實踐13.G.2 468
實踐14 嵌入式界面(μC/GUI) 476
?實踐指導 476
?實踐14.G.1 476
?實踐14.G.2 477
?實踐14.G.3 480
實踐15 嵌入式作業系統(μC/OS-II) 484
?實踐指導 484
?實踐15.G.1 484
?實踐15.G.2 486
實踐16 物聯網網關程式設計 489
?實踐指導 489
?實踐16.G.1 489
附錄A STM32F107管腳定義 504
附錄B STM32F107中斷映射 509
附錄C 復用功能的GPIO配置 512
附錄D STM32F107重映射 515

相關詞條

熱門詞條

聯絡我們