內容簡介
本書全面介紹了嵌汗匙乎籃入式系統開發與套用技術,以基於ARM Cortex-M3核心的STM32F103系列微控制器為硬體平台,系統講述了嵌入式系統開發的基本知識、基本方法以及以STM32F103系列微控制器為核心的嵌入式系統軟、硬體開發過程。主要內容包括阿頁照:嵌入式系統開發基礎知識;ARM技術概述;基於ARM的嵌入式系統應用程式設計;基於STM32F103的嵌入式系精夜格統套用開發實例;uC/OS-III作業系統及套用開發。
圖書目錄
第1章 嵌入式系統概述 1
1.1 信息技術的發展 1
1.1.1 計算機的誕生 1
1.1.2 通用信息處理 2
1.1.3 人工智慧 3
1.2 嵌入式系統 5
1.2.1 嵌入式系統案例分析 6
1.2.2 嵌入式系統概念 9
1.2.3 嵌入式系統與物聯網 10
1.3 嵌入式初學者雜談 11
1.3.1 MCU、MPU、ARM、FPGA、DSP概念 11
1.3.2 MCU開發與ARM-Linux開發的區別 15
1.3.3 開源硬體Arduino和樹莓槳埋奔派 16
1.4 嵌入式系統開發流程 17
1.4.1 系統需求分析 17
1.4.2 系統總體設計 18
1.4.3 系統軟/硬體設計 20
1.4.4 系統軟/硬體測試 21
習題1 21
第2章 ARM Cortex-M3核心與STM32微控制器 22
2.1 嵌入式系統基礎知識 22
2.1.1 馮·諾依曼結構與哈佛結構 22
2.1.2 ARM存儲模式 24
2.1.3 CISC和RISC 25
2.1.4 流水線技術 27
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 存儲結構 39
2.3.4 中斷與異常(NVIC) 40
2.4 STM32微控制器結構 42
2.4.1 STM32系統結構 42
2.4.2 STM32匯流排結構 43
2.4.3 STM32存儲結構 44
2.4.4 STM32中斷 46
2.4.5 STM32時鐘系統 48
習題2 49
第3章 STM32微控制器及開發環境搭建 50
3.1 STM32介紹 50
3.2 STM32微控制器開發模式 55
3.2.1 暫存器開發模式 56
3.2.2 標準外設庫開發模式 57
3.2.3 HAL庫開發模式 58
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庫開發平台的搭建 87
3.5.1 Java運行環境的安裝 87
3.5.2 安裝STM32CubeMX軟體 87
3.5.3 STM32CubeF1庫檔案結構 89
3.5.4 STM32CubeMX生成的工程架構解析 90
習題3 96
第4章 STM32最小系統與嵌入式C語言 98
4.1 STM32最小系統 98
4.1.1 電源電路 98
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關鍵字 108
4.2.3 static關鍵字 108
4.2.4 volatile關鍵字 110
4.2.5 extern關鍵字 110
4.2.6 struct結構體 112
4.2.7 enum 113
4.2.8 typedef 114
4.2.9 #define 115
4.2.10 #ifdef、#ifndef、#else、#if條件編譯 117
4.2.11 指針 119
4.2.12 回調函式 125
4.3 HAL庫檔案原始碼分析 126
4.3.1 stm32f1xx.h 126
4.3.2 stm32f103xe.h 131
4.3.3 stm32f1xx_hal.c和stm32f1xx_hal.h 135
4.3.4 stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 138
習題4 140
第5章 通用輸入/輸出 141
5.1 GPIO概述 141
5.2 STM32的GPIO工作原理 142
5.2.1 STM32F103引腳圖 143
5.2.2 GPIO內部結構 144
5.2.3 GPIO工作模式 145
5.2.4 GPIO輸出速度 148
5.3 GPIO標準外設庫接口函式及套用 148
5.3.1 GPIO標準外設庫接口函式 148
5.3.2 GPIO標準外設庫套用實例 151
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庫開發的一般流程 175
5.5 編程思想之模組化編程 176
習題5 179
第6章 中斷 180
6.1 中斷的相關概念 180
6.1.1 什麼是中斷? 180
6.1.2 為什麼使用中斷? 181
6.1.3 中斷處理流程 181
6.2 STM32中斷和異常 183
6.2.1 STM32中斷和異常向量表 183
6.2.2 STM32中斷優先權 188
6.2.3 STM32中斷服務程式 190
6.3 STM32外部中斷EXTI 191
6.4 EXTI標準外設庫接口函式及套用 194
6.4.1 EXTI標準外設庫接口函式 194
6.4.2 EXTI標準外設庫中斷配置步驟 196
6.4.3 EXTI標準外設庫套用實例 197
6.5 EXTI的HAL庫接口函式及套用 201
6.5.1 EXTI的HAL庫接口函式 201
6.5.2 EXTI的HAL庫套用實例 202
習題6 208
第7章 串口通信 209
7.1 通信概述 209
7.2 異步串列通信 212
7.2.1 異步串列通信協定 212
7.2.2 異步串列通信接口 213
7.3 STM32的USART模組 215
7.3.1 USART內部結構 215
7.3.2 USART接口 218
7.3.3 USART編程模式 219
7.4 USART標準外設庫接口函式及套用 220
7.4.1 USART標準外設庫接口函式 220
7.4.2 USART串口套用編程步驟 225
7.4.3 USART標準外設庫套用實例 226
7.5 USART的HAL庫接口函式及套用 232
7.5.1 UART的HAL庫接口函式 232
7.5.2 USART的HAL庫套用實例 236
7.5.3 USART套用實例拓展 241
7.6 編程思想之自定義串口通信協定 243
習題7 246
第8章 DMA 247
8.1 DMA基礎理論知識 247
8.2 STM32的DMA模組 248
8.2.1 STM32的DMA內部結構 248
8.2.2 DMA優先權 250
8.2.3 DMA中斷請求 250
8.3 DMA標準外設庫接口函式及套用 252
8.3.1 DMA標準外設庫接口函式 252
8.3.2 DMA標準外設庫的配置過程 254
8.3.3 DMA標準外設庫函式的套用實例 255
8.4 DMA的HAL庫接口函式及套用 259
8.4.1 DMA的HAL庫接口函式 259
8.4.2 DMA的HAL庫套用實例 261
習題8 266
第9章 定時器 267
9.1 STM32定時器 268
9.1.1 STM32通用定時器 269
9.1.2 STM32基本定時器 272
9.1.3 STM32高級定時器 273
9.2 定時器標準外設庫接口函式及套用 273
9.2.1 定時器標準外設庫接口函式 273
9.2.2 定時器標準外設庫配置過程 275
9.2.3 定時器標準外設庫套用實例 277
9.3 PWM 279
9.3.1 STM32定時器PWM的工作原理 280
9.3.2 PWM標準外設庫輸出配置過程 281
9.3.3 PWM標準外設庫的套用實例 283
9.4 SysTick定時器 285
9.4.1 SysTick標準外設庫函式 285
9.4.2 SysTick定時器的套用實例 287
9.5 定時器HAL庫接口函式及套用 289
9.5.1 定時器HAL庫接口函式 289
9.5.2 定時器HAL庫套用實例 294
9.6 編程思想之狀態機設計思想 300
習題9 303
第10章 ADC 304
10.1 ADC基礎理論知識 304
10.1.1 A/D轉換過程 304
10.1.2 A/D轉換的主要技術參數 305
10.2 STM32的ADC 306
10.2.1 ADC的引腳 306
10.2.2 ADC通道選擇 308
10.2.3 ADC中斷和DMA請求 309
10.2.4 ADC轉換時間 310
10.2.5 ADC數據對齊 310
10.2.6 ADC的轉換模式 311
10.2.7 ADC校準 311
10.3 ADC標準外設庫接口函式及套用 312
10.3.1 ADC標準外設庫接口函式 312
10.3.2 ADC標準外設庫配置過程 315
10.3.3 ADC標準外設庫的套用實例 317
10.4 ADC的HAL庫接口函式及套用 321
10.4.1 ADC的HAL庫接口函式 321
10.4.2 ADC的HAL庫套用實例 323
習題10 331
第11章 從模組到項目 332
11.1 從模組到項目的開發思路 332
11.1.1 項目需求分析 332
11.1.2 系統總體架構設計 333
11.1.3 系統軟/硬體設計 335
11.2 項目實踐 336
11.2.1 項目需求分析 337
11.2.2 系統總體架構設計 338
11.2.3 系統硬體設計 339
11.2.4 系統軟體設計 341
11.3 面向對象的編程思想 343
習題11 344
第12章 嵌入式作業系統 345
12.1 概述 345
12.1.1 嵌入式系統的開發方式 345
12.1.2 計算機系統的分層設計思想 347
12.2 嵌入式作業系統的概念 349
12.2.1 計算機作業系統 349
12.2.2 嵌入式作業系統 351
12.2.3 嵌入式作業系統的分類 351
12.3 嵌入式實時作業系統 352
12.3.1 μC/OS-Ⅲ的任務 352
12.3.2 μC/OS-Ⅲ時鐘和中斷 361
12.3.3 μC/OS-Ⅲ任務間通信與同步 365
12.4 μC/OS-Ⅲ移植與套用 366
12.4.1 μC/OS-Ⅲ原始碼下載 367
12.4.2 μC/OS-Ⅲ移植 369
12.4.3 μC/OS-Ⅲ多任務套用實例 379
習題12 383
參考文獻 384
3.2.3 HAL庫開發模式 58
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庫開發平台的搭建 87
3.5.1 Java運行環境的安裝 87
3.5.2 安裝STM32CubeMX軟體 87
3.5.3 STM32CubeF1庫檔案結構 89
3.5.4 STM32CubeMX生成的工程架構解析 90
習題3 96
第4章 STM32最小系統與嵌入式C語言 98
4.1 STM32最小系統 98
4.1.1 電源電路 98
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關鍵字 108
4.2.3 static關鍵字 108
4.2.4 volatile關鍵字 110
4.2.5 extern關鍵字 110
4.2.6 struct結構體 112
4.2.7 enum 113
4.2.8 typedef 114
4.2.9 #define 115
4.2.10 #ifdef、#ifndef、#else、#if條件編譯 117
4.2.11 指針 119
4.2.12 回調函式 125
4.3 HAL庫檔案原始碼分析 126
4.3.1 stm32f1xx.h 126
4.3.2 stm32f103xe.h 131
4.3.3 stm32f1xx_hal.c和stm32f1xx_hal.h 135
4.3.4 stm32f1xx_hal_gpio.c和stm32f1xx_hal_gpio.h 138
習題4 140
第5章 通用輸入/輸出 141
5.1 GPIO概述 141
5.2 STM32的GPIO工作原理 142
5.2.1 STM32F103引腳圖 143
5.2.2 GPIO內部結構 144
5.2.3 GPIO工作模式 145
5.2.4 GPIO輸出速度 148
5.3 GPIO標準外設庫接口函式及套用 148
5.3.1 GPIO標準外設庫接口函式 148
5.3.2 GPIO標準外設庫套用實例 151
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庫開發的一般流程 175
5.5 編程思想之模組化編程 176
習題5 179
第6章 中斷 180
6.1 中斷的相關概念 180
6.1.1 什麼是中斷? 180
6.1.2 為什麼使用中斷? 181
6.1.3 中斷處理流程 181
6.2 STM32中斷和異常 183
6.2.1 STM32中斷和異常向量表 183
6.2.2 STM32中斷優先權 188
6.2.3 STM32中斷服務程式 190
6.3 STM32外部中斷EXTI 191
6.4 EXTI標準外設庫接口函式及套用 194
6.4.1 EXTI標準外設庫接口函式 194
6.4.2 EXTI標準外設庫中斷配置步驟 196
6.4.3 EXTI標準外設庫套用實例 197
6.5 EXTI的HAL庫接口函式及套用 201
6.5.1 EXTI的HAL庫接口函式 201
6.5.2 EXTI的HAL庫套用實例 202
習題6 208
第7章 串口通信 209
7.1 通信概述 209
7.2 異步串列通信 212
7.2.1 異步串列通信協定 212
7.2.2 異步串列通信接口 213
7.3 STM32的USART模組 215
7.3.1 USART內部結構 215
7.3.2 USART接口 218
7.3.3 USART編程模式 219
7.4 USART標準外設庫接口函式及套用 220
7.4.1 USART標準外設庫接口函式 220
7.4.2 USART串口套用編程步驟 225
7.4.3 USART標準外設庫套用實例 226
7.5 USART的HAL庫接口函式及套用 232
7.5.1 UART的HAL庫接口函式 232
7.5.2 USART的HAL庫套用實例 236
7.5.3 USART套用實例拓展 241
7.6 編程思想之自定義串口通信協定 243
習題7 246
第8章 DMA 247
8.1 DMA基礎理論知識 247
8.2 STM32的DMA模組 248
8.2.1 STM32的DMA內部結構 248
8.2.2 DMA優先權 250
8.2.3 DMA中斷請求 250
8.3 DMA標準外設庫接口函式及套用 252
8.3.1 DMA標準外設庫接口函式 252
8.3.2 DMA標準外設庫的配置過程 254
8.3.3 DMA標準外設庫函式的套用實例 255
8.4 DMA的HAL庫接口函式及套用 259
8.4.1 DMA的HAL庫接口函式 259
8.4.2 DMA的HAL庫套用實例 261
習題8 266
第9章 定時器 267
9.1 STM32定時器 268
9.1.1 STM32通用定時器 269
9.1.2 STM32基本定時器 272
9.1.3 STM32高級定時器 273
9.2 定時器標準外設庫接口函式及套用 273
9.2.1 定時器標準外設庫接口函式 273
9.2.2 定時器標準外設庫配置過程 275
9.2.3 定時器標準外設庫套用實例 277
9.3 PWM 279
9.3.1 STM32定時器PWM的工作原理 280
9.3.2 PWM標準外設庫輸出配置過程 281
9.3.3 PWM標準外設庫的套用實例 283
9.4 SysTick定時器 285
9.4.1 SysTick標準外設庫函式 285
9.4.2 SysTick定時器的套用實例 287
9.5 定時器HAL庫接口函式及套用 289
9.5.1 定時器HAL庫接口函式 289
9.5.2 定時器HAL庫套用實例 294
9.6 編程思想之狀態機設計思想 300
習題9 303
第10章 ADC 304
10.1 ADC基礎理論知識 304
10.1.1 A/D轉換過程 304
10.1.2 A/D轉換的主要技術參數 305
10.2 STM32的ADC 306
10.2.1 ADC的引腳 306
10.2.2 ADC通道選擇 308
10.2.3 ADC中斷和DMA請求 309
10.2.4 ADC轉換時間 310
10.2.5 ADC數據對齊 310
10.2.6 ADC的轉換模式 311
10.2.7 ADC校準 311
10.3 ADC標準外設庫接口函式及套用 312
10.3.1 ADC標準外設庫接口函式 312
10.3.2 ADC標準外設庫配置過程 315
10.3.3 ADC標準外設庫的套用實例 317
10.4 ADC的HAL庫接口函式及套用 321
10.4.1 ADC的HAL庫接口函式 321
10.4.2 ADC的HAL庫套用實例 323
習題10 331
第11章 從模組到項目 332
11.1 從模組到項目的開發思路 332
11.1.1 項目需求分析 332
11.1.2 系統總體架構設計 333
11.1.3 系統軟/硬體設計 335
11.2 項目實踐 336
11.2.1 項目需求分析 337
11.2.2 系統總體架構設計 338
11.2.3 系統硬體設計 339
11.2.4 系統軟體設計 341
11.3 面向對象的編程思想 343
習題11 344
第12章 嵌入式作業系統 345
12.1 概述 345
12.1.1 嵌入式系統的開發方式 345
12.1.2 計算機系統的分層設計思想 347
12.2 嵌入式作業系統的概念 349
12.2.1 計算機作業系統 349
12.2.2 嵌入式作業系統 351
12.2.3 嵌入式作業系統的分類 351
12.3 嵌入式實時作業系統 352
12.3.1 μC/OS-Ⅲ的任務 352
12.3.2 μC/OS-Ⅲ時鐘和中斷 361
12.3.3 μC/OS-Ⅲ任務間通信與同步 365
12.4 μC/OS-Ⅲ移植與套用 366
12.4.1 μC/OS-Ⅲ原始碼下載 367
12.4.2 μC/OS-Ⅲ移植 369
12.4.3 μC/OS-Ⅲ多任務套用實例 379
習題12 383
參考文獻 384