作者簡介
劉黎明,商丘師範學院電子電氣工程學院,具有豐富的寫作經驗和教學經驗。
目錄
目錄
第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章 從模塊