嵌入式系統基礎與實踐——基於 ARM Cortex-M3 內核的 STM32 微控制器(第2版)

劉黎明,王建波,趙綱領

  • 出版商: 電子工業
  • 出版日期: 2025-05-01
  • 售價: $419
  • 語言: 簡體中文
  • 頁數: 428
  • ISBN: 7121404702
  • ISBN-13: 9787121404702
  • 相關分類: 嵌入式系統
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

本書以嵌入式系統的基本概念和原理為主線,基於ARM Cortex-M3內核的STM32微控制器,遵循系統化、模塊化設計思想,針對STM32的五大外設模塊(GPIO、EXTI、USART、DMA和ADC),分別采用基於標準外設庫和基於HAL庫的設計方法進行詳細闡述,並從初學者的角度出發,詳細講解從模塊到項目的開發過程,並基於μC/OS-Ⅲ嵌入式操作系統講述了嵌入式操作系統的基本原理及開發思路。本書內容全面,由淺入深,配套資源豐富。 本書可以作為高等院校本科生教材。

目錄大綱

目錄

第1章 嵌入式系統概述 1
1.1 信息技術的發展 1
1.1.1 計算機的誕生 1
1.1.2 通用信息處理 2
1.1.3 人工智能 4
1.2 嵌入式系統 5
1.2.1 嵌入式系統案例分析 5
1.2.2 嵌入式系統概念 9
1.2.3 嵌入式系統與物聯網 10
1.3 嵌入式初學者雜談 10
1.3.1 MCU、MPU、ARM、FPGA、DSP概念 11
1.3.2 MCU開發與ARM-Linux開發的區別 14
1.3.3 開源硬件Arduino和樹莓派 15
1.4 嵌入式系統開發流程 16
1.4.1 系統需求分析 17
1.4.2 系統總體設計 18
1.4.3 系統軟硬件設計 19
1.4.4 系統軟硬件測試 20
本章小結 20
習題與思考 21
第2章 ARM Cortex-M3內核與STM32微控制器 23
2.1 嵌入式系統基礎知識 23
2.1.1 馮·諾依曼結構與哈佛結構 23
2.1.2 ARM存儲模式 25
2.1.3 CISC和RISC 26
2.1.4 流水線技術 28
2.2 ARM 29
2.2.1 ARM介紹 29
2.2.2 ARM體系結構 30
2.3 ARM Cortex-M3 33
2.3.1 內核架構 34
2.3.2 寄存器 37
2.3.3 存儲結構 38
2.3.4 中斷與異常(NVIC) 40
2.4 STM32微控制器結構 42
2.4.1 STM32系統結構 42
2.4.2 STM32總線結構 42
2.4.3 STM32存儲結構 43
2.4.4 STM32中斷系統 45
2.4.5 STM32時鐘系統 47
本章小結 48
習題與思考 48
第3章 STM32開發環境搭建 51
3.1 STM32介紹 51
3.2 STM32開發模式 56
3.2.1 寄存器開發模式 57
3.2.2 標準外設庫開發模式 58
3.2.3 HAL庫開發模式 59
3.3 開發平臺的搭建 60
3.3.1 嵌入式開發環境 60
3.3.2 集成開發環境Keil 62
3.3.3 下載和安裝Packs包 63
3.4 基於標準外設庫開發平臺的搭建 66
3.4.1 STM32標準外設庫文件結構 66
3.4.2 基於標準外設庫新建工程模板 73
3.5 基於HAL庫開發平臺的搭建 85
3.5.1 Java運行環境的安裝 85
3.5.2 安裝STM32CubeMX軟件 85
3.5.3 STM32CubeF1庫文件結構 87
3.5.4 STM32CubeMX生成的工程架構解析 88
本章小結 95
習題與思考 95
第4章 STM32最小系統與嵌入式C語言 98
4.1 STM32最小系統 98
4.1.1 電源電路 99
4.1.2 晶振電路 100
4.1.3 復位電路 101
4.1.4 調試和下載電路 102
4.2 嵌入式C語言 104
4.2.1 STM32的數據類型 105
4.2.2 const關鍵字 107
4.2.3 static關鍵字 108
4.2.4 volatile關鍵字 109
4.2.5 extern關鍵字 110
4.2.6 struct結構體 111
4.2.7 enum 112
4.2.8 typedef 113
4.2.9 #define 115
4.2.10 #ifdef、#ifndef、#else、#if條件編譯 116
4.2.11 指針 119
4.2.12 回調函數 124
4.3 HAL庫文件源代碼分析 125
4.3.1 stm32f1xx.h 125
4.3.2 stm32f103xe.h 129
4.3.3 stm32f1xx_hal.c和stm32f1xx_hal.h 134
4.3.4 stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 137
本章小結 139
習題與思考 140
第5章 通用輸入/輸出 142
5.1 GPIO概述 142
5.2 STM32的GPIO 143
5.2.1 GPIO引腳 144
5.2.2 GPIO內部結構 145
5.2.3 GPIO工作模式 146
5.2.4 GPIO輸出速度 148
5.3 GPIO標準外設庫接口函數及應用 149
5.3.1 GPIO標準外設庫接口函數 149
5.3.2 GPIO標準外設庫應用實例 152
5.3.3 基於標準外設庫開發的一般流程 154
5.4 GPIO的HAL庫接口函數及應用 156
5.4.1 GPIO的HAL庫接口函數 156
5.4.2 GPIO的HAL庫應用實例 161
5.4.3 基於HAL庫開發的一般流程 174
5.5 編程思想之模塊化編程 175
本章小結 178
習題與思考 179
第6章 中斷 182
6.1 中斷的相關概念 182
6.1.1 什麼是中斷 182
6.1.2 為什麼使用中斷 183
6.1.3 中斷處理流程 183
6.2 STM32中斷和異常 185
6.2.1 STM32中斷和異常向量表 185
6.2.2 STM32中斷優先級 190
6.2.3 STM32中斷服務程序 192
6.3 STM32外部中斷EXTI 192
6.4 EXTI標準外設庫接口函數及應用 195
6.4.1 EXTI標準外設庫接口函數 195
6.4.2 EXTI標準外設庫中斷應用編程步驟 197
6.4.3 EXTI標準外設庫應用實例 198
6.5 EXTI的HAL庫接口函數及應用 201
6.5.1 EXTI的HAL庫接口函數 201
6.5.2 EXTI的HAL庫應用實例 202
本章小結 208
習題與思考 209
第7章 串口通信 212
7.1 通信概述 212
7.2 異步串行通信 215
7.2.1 異步串行通信協議 215
7.2.2 異步串行通信接口 216
7.3 STM32的USART模塊 217
7.3.1 USART的內部結構 218
7.3.2 USART接口 220
7.3.3 USART的編程方式 221
7.4 USART標準外設庫接口函數及應用 223
7.4.1 USART標準外設庫接口函數 223
7.4.2 USART串口應用編程步驟 227
7.4.3 USART標準外設庫應用實例 228
7.5 USART的HAL庫接口函數及應用 233
7.5.1 USART的HAL庫接口函數 233
7.5.2 USART的HAL庫應用實例 237
7.5.3 USART應用實例拓展 243
7.6 編程思想之自定義串口通信協議 245
本章小結 247
習題與思考 249
第8章 DMA 251
8.1 DMA基礎理論知識 251
8.2 STM32的DMA模塊 252
8.2.1 DMA內部結構 252
8.2.2 DMA優先權 254
8.2.3 DMA中斷請求 256
8.3 DMA標準外設庫接口函數及應用 256
8.3.1 DMA標準外設庫接口函數 256
8.3.2 DMA標準外設庫應用編程步驟 258
8.3.3 DMA標準外設庫應用實例 259
8.4 DMA的HAL庫接口函數及應用 262
8.4.1 DMA的HAL庫接口函數 262
8.4.2 DMA的HAL庫應用實例 264
本章小結 270
習題與思考 271
第9章 定時器 273
9.1 STM32定時器模塊 275
9.1.1 通用定時器 275
9.1.2 基本定時器 278
9.1.3 高級定時器 278
9.2 定時器標準外設庫接口函數及應用 279
9.2.1 定時器標準外設庫接口函數 279
9.2.2 定時器標準外設庫應用編程步驟 280
9.2.3 定時器標準外設庫應用實例 282
9.3 定時器HAL庫接口函數及應用 284
9.3.1 定時器HAL庫接口函數 284
9.3.2 定時器HAL庫應用實例 288
9.4 PWM 294
9.4.1 PWM的工作原理 295
9.4.2 PWM的標準外設庫應用實例 297
9.4.3 PWM的HAL庫應用實例 300
9.5 SysTick定時器 302
9.5.1 SysTick定時器標準外設庫函數 303
9.5.2 SysTick標準外設庫應用實例 304
9.6 編程思想之狀態機設計思想 307
本章小結 310
習題與思考 311
第10章 模擬數字轉換 314
10.1 ADC基礎理論知識 314
10.1.1 A/D轉換過程 315
10.1.2 A/D轉換的主要技術參數 315
10.2 STM32的ADC 316
10.2.1 ADC的引腳 317
10.2.2 ADC通道選擇 318
10.2.3 ADC中斷和DMA請求 319
10.2.4 ADC轉換時間 320
10.2.5 ADC數據對齊 320
10.2.6 ADC轉換模式 320
10.2.7 ADC校準 321
10.3 ADC標準外設庫接口函數及應用 321
10.3.1 ADC標準外設庫接口函數 321
10.3.2 ADC標準外設庫應用編程步驟 325
10.3.3 ADC標準外設庫應用實例 326
10.4 ADC的HAL庫接口函數及應用 330
10.4.1 ADC的HAL庫接口函數 330
10.4.2 ADC的HAL庫應用實例 332
本章小結 340
習題與思考 341
第11章 嵌入式實時操作系統FreeRTOS 344
11.1 FreeRTOS概述 345
11.1.1 FreeRTOS 345
11.1.2 FreeRTOS的數據類型和編程規範 345
11.2 FreeRTOS的任務 349
11.2.1 任務 349
11.2.2 任務調度 349
11.2.3 任務的實現機制 353
11.2.4 任務相關API函數 356
11.2.5 任務創建步驟 358
11.2.6 FreeRTOS創建任務實例 358
11.3 信號量 363
11.3.1 信號量概念 363
11.3.2 信號量實現機制 364
11.3.3 信號量應用步驟 366
11.3.4 信號量應用案例 367
11.4 事件組 372
11.4.1 事件組概念 372
11.4.2 事件組實現機制 373
11.4.3 事件組應用步驟 376
11.4.4 事件組應用案例 376
11.5 消息隊列 381
11.5.1 消息隊列概念 381
11.5.2 消息隊列實現機制 382
11.5.3 消息隊列應用步驟 387
11.5.4 消息隊列應用案例 388
本章小結 393
習題與思考 394
第12章 從模塊到項目 396
12.1 嵌入式系統的開發方式 396
12.2 嵌入式系統層次化設計 400
12.2.1 項目需求分析 400
12.2.2 系統總體架構設計 400
12.3 項目實踐:廚余垃圾智能監測系統 404
12.3.1 項目需求分析 404
12.3.2 系統總體架構設計 405
12.3.3 系統硬件設計 406
12.3.4 系統軟件設計 407
12.4 面向對象的編程思想 410
本章小結 411
習題與思考 412
參考文獻 414