本書主要以基于ARM Cortex-M3內(nèi)核的STM32F10xxx系列處理器為載體,介紹嵌入式系統(tǒng)的硬件結(jié)構(gòu)與編程方法。全書共13章,包括嵌入式系統(tǒng)組成原理、ARM Cortex處理器內(nèi)核結(jié)構(gòu)、集成開發(fā)環(huán)境、STM32系列處理器時(shí)鐘系統(tǒng)、GPIO接口及其應(yīng)用、異常與中斷、定時(shí)/計(jì)數(shù)器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、USART串口通信、SPI通信接口、I2C總線接口和DMA控制器等內(nèi)容。本書選取當(dāng)前最為常用的Keil MDK集成開發(fā)環(huán)境介紹編程與軟件調(diào)試的方法;針對(duì)與硬件內(nèi)容相關(guān)的各章,配置了若干工程實(shí)例,讀者可登錄出版社網(wǎng)站下載這些工程實(shí)例進(jìn)行實(shí)驗(yàn)。
本書適合作為普通高等學(xué)校計(jì)算機(jī)、通信、電子信息、自動(dòng)化及測控技術(shù)與儀器等專業(yè)嵌入式系統(tǒng)基礎(chǔ)等課程的教材,也可作為從事嵌入式系統(tǒng)開發(fā)工作的工程技術(shù)人員的參考書。
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,嵌入式計(jì)算機(jī)系統(tǒng)的應(yīng)用已逐漸遍布于工農(nóng)業(yè)生產(chǎn)的各個(gè)領(lǐng)域,對(duì)社會(huì)的進(jìn)步與發(fā)展起到了巨大的推動(dòng)作用。伴隨著新型工業(yè)化、智能制造、人工智能及大數(shù)據(jù)等技術(shù)的快速發(fā)展,作為支撐這些先進(jìn)技術(shù)發(fā)展的計(jì)算機(jī)信息技術(shù)受到了國家和社會(huì)的高度重視。
嵌入式計(jì)算機(jī)技術(shù)是計(jì)算機(jī)技術(shù)的重要分支,是計(jì)算機(jī)信息技術(shù)、測控技術(shù)高度發(fā)展的必然產(chǎn)物,是實(shí)現(xiàn)生產(chǎn)自動(dòng)化、產(chǎn)品智能化、服務(wù)信息化的關(guān)鍵。目前,我國對(duì)嵌入式技術(shù)人才的需求旺盛,為此許多高等學(xué)校在計(jì)算機(jī)、通信、電子信息、自動(dòng)化及測控技術(shù)與儀器等相關(guān)專業(yè)開設(shè)了嵌入式系統(tǒng)基礎(chǔ)等課程。為進(jìn)一步推進(jìn)嵌入式技術(shù)的教學(xué),我們?cè)诔浞治宅F(xiàn)有教材與教學(xué)經(jīng)驗(yàn)的基礎(chǔ)上編寫了本書。本書具有以下特點(diǎn):
(1) 知識(shí)體系體現(xiàn)先進(jìn)性。本書緊密結(jié)合嵌入式計(jì)算機(jī)系統(tǒng)發(fā)展的最新成果,選取了當(dāng)前嵌入式處理器中應(yīng)用廣泛、技術(shù)先進(jìn)的基于ARM Cortex-M3內(nèi)核的STM32F10xxx系列處理器,重點(diǎn)介紹嵌入式系統(tǒng)的硬件結(jié)構(gòu)和工作原理;同時(shí)選取了當(dāng)前最為常用的Keil MDK集成開發(fā)環(huán)境介紹編程與軟件調(diào)試的方法,還介紹了最新的Keil μVision開發(fā)工具的使用,以緊跟當(dāng)前的技術(shù)潮流。
(2) 充分考慮相關(guān)專業(yè)的教學(xué)需求,突出實(shí)用性和應(yīng)用性。嵌入式系統(tǒng)基礎(chǔ)課程目前針對(duì)的主要對(duì)象并非計(jì)算機(jī)專業(yè)的學(xué)生,而是電子信息、通信、自動(dòng)化及測控技術(shù)等專業(yè)的學(xué)生。這些專業(yè)的學(xué)生通常不具有操作系統(tǒng)、編譯原理等計(jì)算機(jī)基礎(chǔ)知識(shí),編程語言基礎(chǔ)也較為薄弱,這為開展嵌入式系統(tǒng)基礎(chǔ)課程的教學(xué)帶來了很多的困難;谶@樣的實(shí)際情況,結(jié)合以往的教學(xué)經(jīng)驗(yàn),面向廣大非計(jì)算機(jī)專業(yè)的學(xué)生,選取結(jié)構(gòu)先進(jìn)、功能強(qiáng)大、性價(jià)比高的基于ARM Cortex-M3內(nèi)核的STM32F10xxx系列處理器作為嵌入式系統(tǒng)的硬件教學(xué)內(nèi)容,并在此硬件基礎(chǔ)上進(jìn)行無需操作系統(tǒng)支持的軟件開發(fā)設(shè)計(jì),是較為適合“嵌入式系統(tǒng)基礎(chǔ)”教學(xué)的一種選擇。
(3) 注重理論和實(shí)踐相結(jié)合,突出實(shí)踐,以激發(fā)讀者的學(xué)習(xí)興趣,提高學(xué)習(xí)效果。除前面幾章基礎(chǔ)內(nèi)容外,本書其余各章均以理論和實(shí)踐相結(jié)合的方式進(jìn)行內(nèi)容設(shè)計(jì),即先介紹相關(guān)的基本軟硬件的原理及方法,然后通過工程實(shí)例具體說明相關(guān)軟硬件的使用方法,讀者可登錄出版社網(wǎng)站下載這些工程實(shí)例進(jìn)行實(shí)驗(yàn)。
本書第1~9章由韓黨群編寫,第10~13章由琚曉濤編寫。
由于編著者水平有限,書中難免存在不妥之處,敬請(qǐng)各位讀者批評(píng)指正。
編著者
2021年7月
第1章 嵌入式系統(tǒng)組成原理 1
1.1 嵌入式系統(tǒng) 1
1.1.1 嵌入式系統(tǒng)概述 1
1.1.2 嵌入式系統(tǒng)的特點(diǎn) 3
1.1.3 嵌入式處理器 4
1.2 嵌入式系統(tǒng)的硬件結(jié)構(gòu)原理 5
1.2.1 嵌入式系統(tǒng)的硬件組成 5
1.2.2 嵌入式處理器內(nèi)核及其指標(biāo) 7
1.2.3 嵌入式系統(tǒng)的存儲(chǔ)器 9
1.2.4 嵌入式系統(tǒng)的外部設(shè)備 14
1.3 嵌入式系統(tǒng)軟件及其開發(fā) 16
1.3.1 嵌入式系統(tǒng)軟件 16
1.3.2 嵌入式系統(tǒng)軟件開發(fā) 16
思考題與習(xí)題1 17
第2章 ARM Cortex處理器內(nèi)核結(jié)構(gòu) 18
2.1 ARM處理器概述 18
2.1.1 ARM公司簡介 18
2.1.2 ARM內(nèi)核架構(gòu)與產(chǎn)品系列 18
2.1.3 ARM處理器內(nèi)核的設(shè)計(jì)特點(diǎn) 19
2.1.4 經(jīng)典ARM系列的主要特征 21
2.1.5 Cortex系列簡介 22
2.1.6 ARM處理器的應(yīng)用領(lǐng)域及
特點(diǎn) 22
2.2 Cortex-M3內(nèi)核結(jié)構(gòu) 23
2.2.1 Cortex-M3內(nèi)核結(jié)構(gòu) 23
2.2.2 Cortex-M3的存儲(chǔ)器組織結(jié)構(gòu) 25
2.2.3 Cortex-M3位帶區(qū)的映射 26
2.2.4 Cortex-M3私有外設(shè)的映射 28
2.2.5 Cortex-M3片上外設(shè)映射區(qū) 29
2.3 STM32F10xxx系列處理器概述 29
2.3.1 STM32F10xxx系列處理器 29
2.3.2 STM32F10xxx系列處理器
架構(gòu) 31
2.3.3 STM32F10xxx系列處理器的
片內(nèi)存儲(chǔ)器 35
2.3.4 STM32F10xxx系列處理器
片內(nèi)外設(shè) 35
2.3.5 STM32F10xxx系列處理器
片外存儲(chǔ)器和外設(shè) 38
2.4 STM32F10xxx最小系統(tǒng) 39
2.4.1 STM32F10xxx處理器芯片與
引腳 39
2.4.2 STM32F10xxx系列芯片
時(shí)鐘源 45
2.4.3 STM32F10xxx系列處理器的
復(fù)位與啟動(dòng)模式 45
2.4.4 STM32F10xxx系列最小系統(tǒng) 46
思考題與習(xí)題2 47
第3章 集成開發(fā)環(huán)境 48
3.1 Keil μVision 4集成開發(fā)環(huán)境 48
3.1.1 Cortex-M3集成開發(fā)環(huán)境概述 48
3.1.2 Keil μVision 4集成開發(fā)環(huán)境 49
3.1.3 工程項(xiàng)目的創(chuàng)建 51
3.1.4 工程項(xiàng)目的配置 56
3.2 STM32標(biāo)準(zhǔn)外設(shè)庫簡介 60
3.2.1 STM32標(biāo)準(zhǔn)外設(shè)庫結(jié)構(gòu) 60
3.2.2 重要庫文件介紹 60
3.2.3 工程模板的應(yīng)用 62
3.3 Keil μVision 5集成開發(fā)環(huán)境 62
3.3.1 Keil μVision 5概述 63
3.3.2 Keil μVision 5集成開發(fā)環(huán)境 63
3.3.3 在Keil μVision 5環(huán)境中
新建工程 65
思考題與習(xí)題3 71
第4章 STM32系列處理器時(shí)鐘系統(tǒng) 72
4.1 STM32系列處理器時(shí)鐘系統(tǒng) 72
4.1.1 STM32F10xxx系列處理器時(shí)鐘
系統(tǒng)結(jié)構(gòu) 72
4.1.2 內(nèi)部主要時(shí)鐘信號(hào) 74
4.2 復(fù)位與時(shí)鐘控制(RCC)寄存器 76
4.2.1 RCC寄存器簡介 76
4.2.2 RCC寄存器的定義 84
4.2.3 RCC寄存器操作函數(shù) 86
思考題與習(xí)題4 94
第5章 GPIO接口及其應(yīng)用 95
5.1 GPIO基礎(chǔ) 95
5.1.1 GPIO的基本結(jié)構(gòu) 95
5.1.2 GPIO的工作模式 96
5.1.3 GPIO的相關(guān)寄存器 99
5.2 GPIO庫函數(shù) 103
5.2.1 GPIO相關(guān)寄存器的定義 103
5.2.2 GPIO庫函數(shù) 104
5.3 GPIO編程應(yīng)用 108
5.3.1 GPIO測試電路 109
5.3.2 GPIO庫函數(shù)編程 109
5.3.3 GPIO寄存器編程 114
5.4 實(shí)驗(yàn)開發(fā)環(huán)境 119
5.4.1 實(shí)驗(yàn)開發(fā)環(huán)境概述 119
5.4.2 實(shí)驗(yàn)開發(fā)板的選擇 120
5.4.3 仿真調(diào)試設(shè)備的選擇 122
5.5 用仿真器實(shí)現(xiàn)程序下載 126
5.5.1 J-LINK仿真器的配置 126
5.5.2 用J-LINK仿真器實(shí)現(xiàn)程序下載 132
5.5.3 ST-LINK v2仿真器的應(yīng)用 134
5.6 其他程序的下載方法 135
5.6.1 搭建串口下載電路 136
5.6.2 安裝虛擬串口驅(qū)動(dòng)程序 137
5.6.3 應(yīng)用串口下載軟件實(shí)現(xiàn)程序下載 137
5.7 程序仿真基礎(chǔ) 144
5.7.1 軟件仿真 144
5.7.2 硬件仿真 151
思考題與習(xí)題5 154
第6章 異常與中斷 155
6.1 異常與中斷系統(tǒng)基礎(chǔ) 155
6.1.1 Cotex-M3異常與中斷系統(tǒng) 155
6.1.2 STM32F10xxx系列中斷系統(tǒng) 158
6.1.3 NVIC操作庫函數(shù) 162
6.2 外部中斷/事件控制器 165
6.2.1 外部中斷控制器EXTI 166
6.2.2 外部中斷的相關(guān)寄存器 167
6.2.3 外部中斷的操作庫函數(shù) 170
6.3 外部中斷編程實(shí)踐 172
6.3.1 使用外部中斷的基本步驟 173
6.3.2 GPIO外部中斷測試工程 177
思考題與習(xí)題6 181
第7章 定時(shí)/計(jì)數(shù)器 183
7.1 基本定時(shí)器 183
7.1.1 基本定時(shí)器的結(jié)構(gòu)與原理 183
7.1.2 基本定時(shí)器的定時(shí)分析 185
7.1.3 基本定時(shí)器的相關(guān)寄存器 188
7.2 通用定時(shí)器 189
7.2.1 通用定時(shí)器的基本結(jié)構(gòu) 189
7.2.2 通用定時(shí)器的計(jì)數(shù)模式 191
7.2.3 通用定時(shí)器的輸入模式 195
7.2.4 通用定時(shí)器的輸出模式 198
7.2.5 定時(shí)器的觸發(fā)與同步 201
7.2.6 通用定時(shí)器的相關(guān)寄存器 202
7.3 高級(jí)定時(shí)器 203
7.3.1 高級(jí)定時(shí)器的結(jié)構(gòu) 203
7.3.2 高級(jí)定時(shí)器的功能 203
7.3.3 高級(jí)定時(shí)器的相關(guān)寄存器 205
7.4 定時(shí)器的相關(guān)寄存器 206
7.4.1 控制與狀態(tài)寄存器組 206
7.4.2 捕獲/比較通道控制寄存器組 213
7.4.3 時(shí)基單元寄存器組 216
7.4.4 捕獲/比較通道寄存器組 217
7.5 定時(shí)器的操作庫函數(shù) 219
7.5.1 定時(shí)器的操作庫函數(shù)概述 219
7.5.2 定時(shí)器的操作庫函數(shù) 222
7.6 定時(shí)器基本定時(shí)應(yīng)用編程 232
7.6.1 測試硬件環(huán)境 233
7.6.2 查詢方式應(yīng)用 233
7.6.3 中斷方式應(yīng)用 236
7.7 定時(shí)器PWM輸出應(yīng)用編程 239
7.7.1 PWM測試任務(wù) 239
7.7.2 PWM測試應(yīng)用編程 239
7.7.3 PWM測試工程仿真 243
7.8 SysTick定時(shí)器 244
7.8.1 SysTick定時(shí)器概述 244
7.8.2 SysTick定時(shí)器的相關(guān)寄存器 245
7.8.3 SysTick定時(shí)器的操作庫函數(shù) 247
7.8.4 SysTick定時(shí)器編程應(yīng)用舉例 248
思考題與習(xí)題7 252
第8章 A/D轉(zhuǎn)換器 254
8.1 STM32F10xxx系列A/D轉(zhuǎn)換器
基礎(chǔ) 254
8.1.1 A/D轉(zhuǎn)換器概述 254
8.1.2 A/D轉(zhuǎn)換器的結(jié)構(gòu) 255
8.1.3 A/D轉(zhuǎn)換器的時(shí)鐘 257
8.1.4 ADC獨(dú)立工作模式 258
8.1.5 雙ADC工作模式 259
8.1.6 A/D轉(zhuǎn)換器校準(zhǔn) 262
8.1.7 A/D轉(zhuǎn)換器的相關(guān)寄存器 262
8.2 A/D轉(zhuǎn)換器的操作庫函數(shù) 271
8.2.1 A/D轉(zhuǎn)換器的操作庫
函數(shù)概述 271
8.2.2 A/D轉(zhuǎn)換器的操作庫函數(shù) 272
8.3 A/D轉(zhuǎn)換器編程應(yīng)用 281
8.3.1 單路A/D轉(zhuǎn)換器編程實(shí)例 282
8.3.2 雙路A/D轉(zhuǎn)換器編程實(shí)例 289
思考題與習(xí)題8 293
第9章 D/A轉(zhuǎn)換器 294
9.1 STM32F10xxx系列D/A
轉(zhuǎn)換器基礎(chǔ) 294
9.1.1 D/A轉(zhuǎn)換器的基本特性 294
9.1.2 D/A轉(zhuǎn)換器的結(jié)構(gòu)與原理 294
9.1.3 DAC獨(dú)立工作模式 296
9.1.4 雙DAC工作模式 297
9.1.5 D/A轉(zhuǎn)換器的相關(guān)寄存器 298
9.2 D/A轉(zhuǎn)換器的操作庫函數(shù) 302
9.2.1 D/A轉(zhuǎn)換器的操作庫函數(shù)概述 302
9.2.2 D/A轉(zhuǎn)換器的操作庫函數(shù) 302
9.3 D/A轉(zhuǎn)換器編程應(yīng)用 306
9.3.1 D/A轉(zhuǎn)換器編程的基本步驟 306
9.3.2 單路D/A轉(zhuǎn)換器編程實(shí)例 307
9.3.3 雙路D/A轉(zhuǎn)換器編程實(shí)例 312
思考題與習(xí)題9 318
第10章 USART串口通信 319
10.1 STM32F10xxx系列USART串口
?通信基礎(chǔ) 319
10.1.1 USART的基本特性 319
10.1.2 USART的結(jié)構(gòu)與原理 320
10.1.3 USART幀格式 321
10.1.4 硬件流控制 322
10.1.5 USART的相關(guān)寄存器 324
10.2 USART串口通信的操作庫函數(shù) 330
10.2.1 USART串口通信的操作
庫函數(shù)概述 330
10.2.2 USART串口通信的操作
庫函數(shù) 330
10.3 USART串口通信編程應(yīng)用 333
10.3.1 USART串口通信編程的
基本步驟 333
10.3.2 USART串口通信編程實(shí)例 334
思考題與習(xí)題10 340
第11章 SPI通信接口 341
11.1 STM32F10xxx系列SPI通信基礎(chǔ) 341
11.1.1 SPI基礎(chǔ) 341
11.1.2 SPI通信的基本特性 344
11.1.3 SPI通信的結(jié)構(gòu)與工作原理 345
11.1.4 SPI的相關(guān)寄存器 346
11.2 SPI通信的操作庫函數(shù) 350
11.2.1 SPI通信的操作庫函數(shù)概述 350
11.2.2 SPI通信的操作庫函數(shù) 351
11.3 SPI通信編程應(yīng)用 354
11.3.1 SPI通信編程的基本步驟 354
11.3.2 單路SPI通信編程實(shí)例 355
思考題與習(xí)題11 373
第12章 I2C總線接口 374
12.1 I2C概述 374
12.1.1 I2C總線的基本特性 374
12.1.2 I2C基礎(chǔ) 375
12.1.3 I2C結(jié)構(gòu) 378
12.2 I2C操作 381
12.2.1 I2C的通信過程 381
12.2.2 I2C中斷請(qǐng)求 382
12.2.3 I2C相關(guān)寄存器 384
12.3 I2C編程應(yīng)用 390
12.3.1 I2C初始化結(jié)構(gòu)體詳解 390
12.3.2 I2C讀/寫EEPROM實(shí)驗(yàn) 393
思考題與習(xí)題12 413
第13章 DMA控制器 414
13.1 DMA控制器的結(jié)構(gòu)與原理 414
13.1.1 DMA控制器的基本特性 414
13.1.2 DMA控制器的結(jié)構(gòu)與原理 414
13.1.3 DMA控制器的相關(guān)寄存器 418
13.2 DMA控制器的操作庫函數(shù) 422
13.2.1 DMA控制器的操作庫
函數(shù)概述 422
13.2.2 DMA控制器的操作庫函數(shù) 422
13.3 DMA控制器編程應(yīng)用 426
13.3.1 DMA控制器編程的
基本步驟 426
13.3.2 DMA控制器編程實(shí)例 426
思考題與習(xí)題13 431
參考文獻(xiàn) 432