本書以ST公司內(nèi)嵌Cortex-M4內(nèi)核的STM32F4xx系列ARM控制器為重點,深入淺出地介紹了STM32應(yīng)用開發(fā)所涉及的各個方面的關(guān)鍵技術(shù)。全書內(nèi)容可分為四大部分:第1、2章主要介紹STM32處理器內(nèi)嵌Cortex-M3/M4內(nèi)核的架構(gòu)與資源,包括工作模式與狀態(tài)、寄存器、總線接口、指令系統(tǒng)、異常與中斷、存儲器組織映射等;第3、4章為STM32開發(fā)基礎(chǔ),主要介紹STM32F407處理器的軟硬件資源、開發(fā)調(diào)試手段與方法以及最小系統(tǒng)設(shè)計與調(diào)試;第5~10章為STM32應(yīng)用開發(fā)實踐,主要介紹STM32的GPIO、中斷、定時器、USART、SPI、I2C、ADC/DAC、DMA等接口的資源配置、軟件編程以及應(yīng)用實踐;第11章為物聯(lián)網(wǎng)感知層應(yīng)用開發(fā),主要介紹STM32在物聯(lián)網(wǎng)應(yīng)用開發(fā)中常搭配使用的無線通信模塊WiFi、ZigBee、Bluetooth、NB-IoT、LoRa及其應(yīng)用開發(fā)。
本書在內(nèi)容安排上由淺入深,理論與實踐相結(jié)合,將STM32資源配置、接口及外設(shè)的應(yīng)用開發(fā)作為重點,列出了各種實踐案例和結(jié)果,具有較強(qiáng)的實踐性。
本書可作為高職高專院校計算機(jī)、信息科學(xué)、電子信息等相關(guān)專業(yè)STM32單片機(jī)開發(fā)課程的教材,也可作為教師、科研人員和相關(guān)培訓(xùn)機(jī)構(gòu)的參考材料,還可作為物聯(lián)網(wǎng)初中級開發(fā)人員、STM32單片機(jī)自學(xué)者的教材和參考書。
ARM處理器作為嵌入式系統(tǒng)應(yīng)用技術(shù)中的領(lǐng)導(dǎo)者,在物聯(lián)網(wǎng)、人工智能、機(jī)器人等各個行業(yè)和領(lǐng)域得到了廣泛的應(yīng)用。ARM處理器的應(yīng)用開發(fā)作為高等院校IT類專業(yè)學(xué)生必備的專業(yè)技能,是大學(xué)畢業(yè)生從業(yè)的基礎(chǔ),在學(xué)生擇業(yè)、就業(yè)的過程中發(fā)揮著重要的作用。因此,很多理工科類高等院校均將ARM處理器應(yīng)用開發(fā)作為必修課或選修課列入了人才培養(yǎng)方案和教學(xué)計劃中。
作為ARM內(nèi)核的系列處理器,STM32的應(yīng)用范圍廣、影響大。因此,本書以封裝了Cortex-M3/M4內(nèi)核的STM32F4xx處理器為主體,介紹了STM32應(yīng)用開發(fā)關(guān)鍵技術(shù)和應(yīng)掌握的核心技能,以滿足教學(xué)要求、就業(yè)需求和企業(yè)對人才的需要。
本書的特色如下:
(1) 依照嵌入式系統(tǒng)開發(fā)的核心技能,在理論基礎(chǔ)部分,重點介紹Cortex-M3/M4內(nèi)核結(jié)構(gòu)、寄存器、總線接口、指令系統(tǒng)、異常與中斷、存儲器保護(hù)單元,這是從事STM32嵌入式應(yīng)用開發(fā)必備的基礎(chǔ);在STM32應(yīng)用開發(fā)基礎(chǔ)部分,介紹STM32F407處理器軟硬資源、開發(fā)調(diào)試環(huán)境、最小系統(tǒng)組成,此部分主要讓學(xué)生建立嵌入式系統(tǒng)框架的概念,理解最小系統(tǒng)的重要性,掌握STM32應(yīng)用開發(fā)使用的軟件和硬件環(huán)境以及開發(fā)手段和方法;在STM32應(yīng)用開發(fā)實踐部分,主要介紹STM32的GPIO、中斷、定時器、USART、SPI、I2C、ADC/DAC、DMA等接口的資源配置、軟件編程以及應(yīng)用實踐;最后為綜合應(yīng)用開發(fā)部分,綜合應(yīng)用前面各章節(jié)知識,獨(dú)立完整地開發(fā)一套可用的物聯(lián)網(wǎng)無線傳感節(jié)點產(chǎn)品。
(2) 按照STM32應(yīng)用開發(fā)的流程,對GPIO、USART、SPI、I2C、ADC/DAC等外設(shè)接口設(shè)計了多個導(dǎo)引式的學(xué)習(xí)情境案例,每個學(xué)習(xí)情境均將知識體系和實踐技能相結(jié)合,由淺及深地講解,使學(xué)生更容易理解和掌握,可以產(chǎn)生良好的教學(xué)效果。
(3) 充分體現(xiàn)了高職院校的教學(xué)特點,引入STM32開發(fā)案例,設(shè)計STM32綜合應(yīng)用項目,在提高學(xué)生應(yīng)用技能的同時,強(qiáng)化項目驅(qū)動,實現(xiàn)“工學(xué)結(jié)合”,提高了理論教學(xué)和實踐教學(xué)質(zhì)量。
本書內(nèi)容安排遵循嵌入式開發(fā)流程和循序漸進(jìn)的學(xué)習(xí)規(guī)律,結(jié)合案例加深對嵌入式系統(tǒng)的理解,讓學(xué)生掌握應(yīng)用開發(fā)的核心技能和方法,并通過綜合實踐培養(yǎng)學(xué)生獨(dú)立的工作能力。本書共11章,各章內(nèi)容安排如下:
第1章為Cortex-M3/M4體系結(jié)構(gòu),主要介紹STM32的內(nèi)核Cortex-M3/M4體系結(jié)構(gòu),從內(nèi)核充分了解STM32的功能及性能特點。
第2章為STM32處理器概述,主要介紹STM32處理器的命名方式、功能、資源以及外形封裝。
第3章為STM32開發(fā)與調(diào)試方法,主要介紹STM32開發(fā)環(huán)境的搭建、工程的創(chuàng)建、程序的下載以及不同的開發(fā)模式。
第4章為STM32最小系統(tǒng),主要介紹滿足STM32工作的最小電路的硬件組成結(jié)構(gòu),以及STM32工作的硬件基礎(chǔ)知識。
第5章為GPIO的功能與應(yīng)用,主要介紹GPIO的結(jié)構(gòu)和功能、GPIO的寄存器與庫函數(shù)以及GPIO口的應(yīng)用案例。
第6章為STM32中斷與編程,主要介紹STM32中斷過程、中斷控制器(NVIC)的配置過程、外部中斷(EXTI)結(jié)構(gòu)和配置過程以及中斷相關(guān)的實踐案例。
第7章為STM32定時器與編程,主要介紹STM32的三種不同用途的定時器,并按照不同用途講解應(yīng)用案例。
第8章為USART及其應(yīng)用,主要介紹USART作為STM32頻繁使用的片上外設(shè)的基本功能、串口中斷、串口相關(guān)的寄存器和庫函數(shù)以及串口應(yīng)用案例。
第9章為同步串行總線SPI和I2C,主要介紹STM32中常用的總線協(xié)議——I2C協(xié)議和SPI協(xié)議及其應(yīng)用與實踐。
第10章為ADC/DAC與DMA的原理及應(yīng)用,主要介紹STM32具有的ADC/DAC (模數(shù)/數(shù)模轉(zhuǎn)換)功能的使用配置方法以及DMA概述與應(yīng)用。
第11章為物聯(lián)網(wǎng)感知層應(yīng)用開發(fā),主要介紹STM32單片機(jī)技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用案例,以STM32搭配WiFi模塊、ZigBee模塊、Bluetooth模塊、NB-IoT模塊、LoRa模塊等,實現(xiàn)不同場景的遠(yuǎn)距離無線通信。
本書的三位編者長期從事ARM嵌入式應(yīng)用開發(fā)的各項工作,包括產(chǎn)品研發(fā)、ARM的應(yīng)用推廣、ARM嵌入式培訓(xùn)和教學(xué)工作。在撰寫本書的過程中我們得到了深圳信息職業(yè)技術(shù)學(xué)院、北京旋極信息技術(shù)股份有限公司、深圳市鶴洲富通科技有限公司的鼎力支持和幫助,在此一并表示衷心的感謝!
由于編者水平有限,書中難免存在不足之處,懇請讀者批評指正,我們將在隨后的修訂中逐步完善本書。衷心希望本書能在我國的職教事業(yè)發(fā)展中作出些許的貢獻(xiàn)。
編 者
2022年1月
第1章 Cortex-M3/M4體系結(jié)構(gòu) 1
1.1 Cortex-M3/M4內(nèi)核結(jié)構(gòu) 1
1.2 工作模式及狀態(tài) 3
1.3 寄存器 4
1.4 總線接口 7
1.5 存儲器組織與映射 9
1.6 指令集 13
1.6.1 ARM指令集 16
1.6.2 Thumb指令集 17
1.6.3 Thumb-2指令集 18
1.7 流水線 19
1.8 異常與中斷 19
1.8.1 異常和中斷的概念 19
1.8.2 中斷控制器 20
1.8.3 中斷、異常過程 21
1.8.4 嵌套優(yōu)先級 21
1.8.5 咬尾中斷 21
1.8.6 晚到異常 22
1.8.7 異常返回值 23
思考與練習(xí) 23
第2章 STM32處理器概述 24
2.1 STM32處理器命名 24
2.2 STM32處理器資源 25
2.3 STM32F407處理器 25
2.3.1 STM32F407系統(tǒng)架構(gòu) 26
2.3.2 STM32F407功能單元 27
2.3.3 STM32F407處理器資源 27
2.3.4 STM32F407引腳和封裝 29
思考與練習(xí) 31
第3章 STM32開發(fā)與調(diào)試方法 32
3.1 STM32的開發(fā)環(huán)境與使用 32
3.1.1 開發(fā)環(huán)境簡介 32
3.1.2 開發(fā)環(huán)境的使用 33
3.2 STM32程序的開發(fā)模式 41
3.2.1 基于寄存器的開發(fā)模式 41
3.2.2 基于固件庫的開發(fā)模式 43
3.2.3 基于操作系統(tǒng)的開發(fā)模式 46
3.3 STM32工程的創(chuàng)建 46
3.3.1 STM32固件庫 46
3.3.2 創(chuàng)建工程 50
3.4 程序的下載(燒寫) 55
3.4.1 基于串口的程序下載 56
3.4.2 基于JTAG接口的程序下載 57
3.4.3 ST-Link調(diào)試程序 61
3.5 實踐案例(LED跑馬燈) 64
思考與練習(xí) 66
第4章 STM32最小系統(tǒng) 67
4.1 電源模塊 67
4.1.1 供電方案 67
4.1.2 電源管理器 69
4.1.3 低功耗模式 69
4.2 時鐘電路 70
4.2.1 HES時鐘和HSI時鐘 71
4.2.2 PLL鎖相環(huán) 72
4.2.3 LSE時鐘和LSI時鐘 73
4.2.4 系統(tǒng)時鐘SysCLK 73
4.2.5 RCC寄存器 75
4.3 復(fù)位電路 78
4.4 程序下載電路 79
4.5 STM32的最小系統(tǒng) 80
思考與練習(xí) 81
第5章 GPIO的功能與應(yīng)用 82
5.1 GPIO的結(jié)構(gòu)與功能 82
5.1.1 GPIO的硬件結(jié)構(gòu) 82
5.1.2 復(fù)用功能與鉗位功能 83
5.1.3 GPIO的輸入/輸出功能 84
5.1.4 GPIO的速度選擇 85
5.2 GPIO的寄存器與庫函數(shù) 86
5.2.1 GPIO的寄存器 86
5.2.2 GPIO的庫函數(shù) 88
5.2.3 寄存器與庫函數(shù)的關(guān)系 91
5.3 實踐案例 97
思考與練習(xí) 98
第6章 STM32中斷與編程 100
6.1 STM32中斷通道與中斷過程 100
6.1.1 STM32中斷通道 100
6.1.2 STM32的中斷過程 104
6.2 NVIC結(jié)構(gòu)及配置 105
6.2.1 NVIC結(jié)構(gòu) 105
6.2.2 STM32中斷優(yōu)先級 105
6.2.3 中斷向量表 106
6.2.4 NVIC寄存器和NVIC庫函數(shù) 107
6.3 EXTI結(jié)構(gòu)及配置 108
6.3.1 EXTI結(jié)構(gòu) 108
6.3.2 EXTI中斷與事件 109
6.3.3 EXTI中斷通道與中斷源 109
6.3.4 EXTI寄存器與EXTI庫函數(shù) 110
6.4 實踐案例 112
思考與練習(xí) 115
第7章 STM32定時器與編程 116
7.1 STM32通用定時器TIMx 116
7.1.1 時鐘源和時基單元 116
7.1.2 捕獲/比較通道 118
7.1.3 計數(shù)模式和定時中斷 120
7.1.4 TIMx寄存器和庫函數(shù) 121
7.2 STM32實時時鐘RTC 126
7.2.1 RTC的功能和結(jié)構(gòu) 126
7.2.2 RTC的控制寄存器和
備份寄存器 127
7.2.3 電源控制寄存器 129
7.2.4 RTC寄存器 130
7.3 STM32系統(tǒng)定時器 131
7.3.1 控制與狀態(tài)寄存器 132
7.3.2 重裝載寄存器 132
7.3.3 當(dāng)前值寄存器 132
7.4 STM32定時器應(yīng)用案例 133
7.4.1 TIMx應(yīng)用案例 133
7.4.2 RTC應(yīng)用案例 143
7.4.3 SysTick應(yīng)用案例 150
思考與練習(xí) 153
第8章 USART及其應(yīng)用 154
8.1 端口重映射 154
8.2 USART的功能和結(jié)構(gòu) 155
8.3 USART的幀格式、波特率設(shè)置 157
8.4 USART的中斷請求 159
8.5 USART的寄存器和庫函數(shù) 161
8.6 USART應(yīng)用案例 165
思考與練習(xí) 168
第9章 同步串行總線SPI和I2C 169
9.1 SPI概述及應(yīng)用要點 169
9.2 SPI接口應(yīng)用及實踐 171
9.3 I2C概述及應(yīng)用要點 177
9.4 I2C總線應(yīng)用及實踐 179
思考與練習(xí) 188
第10章 ADC/DAC與DMA的
原理及應(yīng)用 189
10.1 STM32的ADC 189
10.1.1 ADC的功能與結(jié)構(gòu) 189
10.1.2 ADC的工作模式 194
10.1.3 ADC中斷 195
10.1.4 ADC的寄存器和庫函數(shù) 195
10.1.5 ADC應(yīng)用案例 199
10.2 DAC的結(jié)構(gòu)和配置 204
10.3 DMA概述與應(yīng)用 210
10.3.1 DMA的功能與結(jié)構(gòu) 210
10.3.2 DMA的寄存器和庫函數(shù) 212
10.3.3 DMA的配置要點 215
思考與練習(xí) 221
第11章 物聯(lián)網(wǎng)感知層應(yīng)用開發(fā) 222
11.1 AT指令集及應(yīng)用 222
11.2 WiFi模塊應(yīng)用開發(fā) 224
11.2.1 WiFi模塊結(jié)構(gòu) 224
11.2.2 WiFi模塊編程實踐 229
11.3 ZigBee模塊應(yīng)用開發(fā) 246
11.3.1 ZigBee模塊結(jié)構(gòu) 246
11.3.2 ZigBee模塊協(xié)議棧 247
11.3.3 ZigBee模塊編程實踐 254
11.4 Bluetooth模塊應(yīng)用開發(fā) 257
11.4.1 Bluetooth模塊結(jié)構(gòu) 257
11.4.2 Bluetooth模塊編程實踐 259
11.5 NB-IoT模塊應(yīng)用開發(fā) 265
11.5.1 NB-IoT模塊的結(jié)構(gòu)特點及
工作模式 265
11.5.2 NB-IoT模塊編程實踐 271
11.6 LoRa模塊應(yīng)用開發(fā) 274
11.6.1 LoRa模塊的結(jié)構(gòu)特點及數(shù)據(jù)
管理 275
11.6.2 LoRa模塊編程實踐 276
思考與練習(xí) 284
附錄 英文縮略詞中文對照 285
參考文獻(xiàn) 288