本書以ST公司內嵌Cortex-M4內核的STM32F4xx系列ARM控制器為重點,深入淺出地介紹了STM32應用開發(fā)所涉及的各個方面的關鍵技術。全書內容可分為四大部分:第1、2章主要介紹STM32處理器內嵌Cortex-M3/M4內核的架構與資源,包括工作模式與狀態(tài)、寄存器、總線接口、指令系統(tǒng)、異常與中斷、存儲器組織映射等;第3、4章為STM32開發(fā)基礎,主要介紹STM32F407處理器的軟硬件資源、開發(fā)調試手段與方法以及最小系統(tǒng)設計與調試;第5~10章為STM32應用開發(fā)實踐,主要介紹STM32的GPIO、中斷、定時器、USART、SPI、I2C、ADC/DAC、DMA等接口的資源配置、軟件編程以及應用實踐;第11章為物聯(lián)網(wǎng)感知層應用開發(fā),主要介紹STM32在物聯(lián)網(wǎng)應用開發(fā)中常搭配使用的無線通信模塊WiFi、ZigBee、Bluetooth、NB-IoT、LoRa及其應用開發(fā)。
本書在內容安排上由淺入深,理論與實踐相結合,將STM32資源配置、接口及外設的應用開發(fā)作為重點,列出了各種實踐案例和結果,具有較強的實踐性。
本書可作為高職高專院校計算機、信息科學、電子信息等相關專業(yè)STM32單片機開發(fā)課程的教材,也可作為教師、科研人員和相關培訓機構的參考材料,還可作為物聯(lián)網(wǎng)初中級開發(fā)人員、STM32單片機自學者的教材和參考書。
ARM處理器作為嵌入式系統(tǒng)應用技術中的領導者,在物聯(lián)網(wǎng)、人工智能、機器人等各個行業(yè)和領域得到了廣泛的應用。ARM處理器的應用開發(fā)作為高等院校IT類專業(yè)學生必備的專業(yè)技能,是大學畢業(yè)生從業(yè)的基礎,在學生擇業(yè)、就業(yè)的過程中發(fā)揮著重要的作用。因此,很多理工科類高等院校均將ARM處理器應用開發(fā)作為必修課或選修課列入了人才培養(yǎng)方案和教學計劃中。
作為ARM內核的系列處理器,STM32的應用范圍廣、影響大。因此,本書以封裝了Cortex-M3/M4內核的STM32F4xx處理器為主體,介紹了STM32應用開發(fā)關鍵技術和應掌握的核心技能,以滿足教學要求、就業(yè)需求和企業(yè)對人才的需要。
本書的特色如下:
(1) 依照嵌入式系統(tǒng)開發(fā)的核心技能,在理論基礎部分,重點介紹Cortex-M3/M4內核結構、寄存器、總線接口、指令系統(tǒng)、異常與中斷、存儲器保護單元,這是從事STM32嵌入式應用開發(fā)必備的基礎;在STM32應用開發(fā)基礎部分,介紹STM32F407處理器軟硬資源、開發(fā)調試環(huán)境、最小系統(tǒng)組成,此部分主要讓學生建立嵌入式系統(tǒng)框架的概念,理解最小系統(tǒng)的重要性,掌握STM32應用開發(fā)使用的軟件和硬件環(huán)境以及開發(fā)手段和方法;在STM32應用開發(fā)實踐部分,主要介紹STM32的GPIO、中斷、定時器、USART、SPI、I2C、ADC/DAC、DMA等接口的資源配置、軟件編程以及應用實踐;最后為綜合應用開發(fā)部分,綜合應用前面各章節(jié)知識,獨立完整地開發(fā)一套可用的物聯(lián)網(wǎng)無線傳感節(jié)點產品。
(2) 按照STM32應用開發(fā)的流程,對GPIO、USART、SPI、I2C、ADC/DAC等外設接口設計了多個導引式的學習情境案例,每個學習情境均將知識體系和實踐技能相結合,由淺及深地講解,使學生更容易理解和掌握,可以產生良好的教學效果。
(3) 充分體現(xiàn)了高職院校的教學特點,引入STM32開發(fā)案例,設計STM32綜合應用項目,在提高學生應用技能的同時,強化項目驅動,實現(xiàn)“工學結合”,提高了理論教學和實踐教學質量。
本書內容安排遵循嵌入式開發(fā)流程和循序漸進的學習規(guī)律,結合案例加深對嵌入式系統(tǒng)的理解,讓學生掌握應用開發(fā)的核心技能和方法,并通過綜合實踐培養(yǎng)學生獨立的工作能力。本書共11章,各章內容安排如下:
第1章為Cortex-M3/M4體系結構,主要介紹STM32的內核Cortex-M3/M4體系結構,從內核充分了解STM32的功能及性能特點。
第2章為STM32處理器概述,主要介紹STM32處理器的命名方式、功能、資源以及外形封裝。
第3章為STM32開發(fā)與調試方法,主要介紹STM32開發(fā)環(huán)境的搭建、工程的創(chuàng)建、程序的下載以及不同的開發(fā)模式。
第4章為STM32最小系統(tǒng),主要介紹滿足STM32工作的最小電路的硬件組成結構,以及STM32工作的硬件基礎知識。
第5章為GPIO的功能與應用,主要介紹GPIO的結構和功能、GPIO的寄存器與庫函數(shù)以及GPIO口的應用案例。
第6章為STM32中斷與編程,主要介紹STM32中斷過程、中斷控制器(NVIC)的配置過程、外部中斷(EXTI)結構和配置過程以及中斷相關的實踐案例。
第7章為STM32定時器與編程,主要介紹STM32的三種不同用途的定時器,并按照不同用途講解應用案例。
第8章為USART及其應用,主要介紹USART作為STM32頻繁使用的片上外設的基本功能、串口中斷、串口相關的寄存器和庫函數(shù)以及串口應用案例。
第9章為同步串行總線SPI和I2C,主要介紹STM32中常用的總線協(xié)議——I2C協(xié)議和SPI協(xié)議及其應用與實踐。
第10章為ADC/DAC與DMA的原理及應用,主要介紹STM32具有的ADC/DAC (模數(shù)/數(shù)模轉換)功能的使用配置方法以及DMA概述與應用。
第11章為物聯(lián)網(wǎng)感知層應用開發(fā),主要介紹STM32單片機技術在物聯(lián)網(wǎng)中的應用案例,以STM32搭配WiFi模塊、ZigBee模塊、Bluetooth模塊、NB-IoT模塊、LoRa模塊等,實現(xiàn)不同場景的遠距離無線通信。
本書的三位編者長期從事ARM嵌入式應用開發(fā)的各項工作,包括產品研發(fā)、ARM的應用推廣、ARM嵌入式培訓和教學工作。在撰寫本書的過程中我們得到了深圳信息職業(yè)技術學院、北京旋極信息技術股份有限公司、深圳市鶴洲富通科技有限公司的鼎力支持和幫助,在此一并表示衷心的感謝!
由于編者水平有限,書中難免存在不足之處,懇請讀者批評指正,我們將在隨后的修訂中逐步完善本書。衷心希望本書能在我國的職教事業(yè)發(fā)展中作出些許的貢獻。
編 者
2022年1月
第1章 Cortex-M3/M4體系結構 1
1.1 Cortex-M3/M4內核結構 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
思考與練習 23
第2章 STM32處理器概述 24
2.1 STM32處理器命名 24
2.2 STM32處理器資源 25
2.3 STM32F407處理器 25
2.3.1 STM32F407系統(tǒng)架構 26
2.3.2 STM32F407功能單元 27
2.3.3 STM32F407處理器資源 27
2.3.4 STM32F407引腳和封裝 29
思考與練習 31
第3章 STM32開發(fā)與調試方法 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調試程序 61
3.5 實踐案例(LED跑馬燈) 64
思考與練習 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 復位電路 78
4.4 程序下載電路 79
4.5 STM32的最小系統(tǒng) 80
思考與練習 81
第5章 GPIO的功能與應用 82
5.1 GPIO的結構與功能 82
5.1.1 GPIO的硬件結構 82
5.1.2 復用功能與鉗位功能 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ù)的關系 91
5.3 實踐案例 97
思考與練習 98
第6章 STM32中斷與編程 100
6.1 STM32中斷通道與中斷過程 100
6.1.1 STM32中斷通道 100
6.1.2 STM32的中斷過程 104
6.2 NVIC結構及配置 105
6.2.1 NVIC結構 105
6.2.2 STM32中斷優(yōu)先級 105
6.2.3 中斷向量表 106
6.2.4 NVIC寄存器和NVIC庫函數(shù) 107
6.3 EXTI結構及配置 108
6.3.1 EXTI結構 108
6.3.2 EXTI中斷與事件 109
6.3.3 EXTI中斷通道與中斷源 109
6.3.4 EXTI寄存器與EXTI庫函數(shù) 110
6.4 實踐案例 112
思考與練習 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的功能和結構 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 當前值寄存器 132
7.4 STM32定時器應用案例 133
7.4.1 TIMx應用案例 133
7.4.2 RTC應用案例 143
7.4.3 SysTick應用案例 150
思考與練習 153
第8章 USART及其應用 154
8.1 端口重映射 154
8.2 USART的功能和結構 155
8.3 USART的幀格式、波特率設置 157
8.4 USART的中斷請求 159
8.5 USART的寄存器和庫函數(shù) 161
8.6 USART應用案例 165
思考與練習 168
第9章 同步串行總線SPI和I2C 169
9.1 SPI概述及應用要點 169
9.2 SPI接口應用及實踐 171
9.3 I2C概述及應用要點 177
9.4 I2C總線應用及實踐 179
思考與練習 188
第10章 ADC/DAC與DMA的
原理及應用 189
10.1 STM32的ADC 189
10.1.1 ADC的功能與結構 189
10.1.2 ADC的工作模式 194
10.1.3 ADC中斷 195
10.1.4 ADC的寄存器和庫函數(shù) 195
10.1.5 ADC應用案例 199
10.2 DAC的結構和配置 204
10.3 DMA概述與應用 210
10.3.1 DMA的功能與結構 210
10.3.2 DMA的寄存器和庫函數(shù) 212
10.3.3 DMA的配置要點 215
思考與練習 221
第11章 物聯(lián)網(wǎng)感知層應用開發(fā) 222
11.1 AT指令集及應用 222
11.2 WiFi模塊應用開發(fā) 224
11.2.1 WiFi模塊結構 224
11.2.2 WiFi模塊編程實踐 229
11.3 ZigBee模塊應用開發(fā) 246
11.3.1 ZigBee模塊結構 246
11.3.2 ZigBee模塊協(xié)議棧 247
11.3.3 ZigBee模塊編程實踐 254
11.4 Bluetooth模塊應用開發(fā) 257
11.4.1 Bluetooth模塊結構 257
11.4.2 Bluetooth模塊編程實踐 259
11.5 NB-IoT模塊應用開發(fā) 265
11.5.1 NB-IoT模塊的結構特點及
工作模式 265
11.5.2 NB-IoT模塊編程實踐 271
11.6 LoRa模塊應用開發(fā) 274
11.6.1 LoRa模塊的結構特點及數(shù)據(jù)
管理 275
11.6.2 LoRa模塊編程實踐 276
思考與練習 284
附錄 英文縮略詞中文對照 285
參考文獻 288