本書共 13 章, 內(nèi)容包括: 嵌入式系統(tǒng)簡介, 嵌入式單片機(jī) STM32 的硬件基礎(chǔ)、 軟件開發(fā)基礎(chǔ)、 通用功能輸入輸出 ( GPIO) 、 外部中斷 EXTI、通用同步/異步通信、 通用定時(shí)器、 直接存儲(chǔ)器存取、 模/數(shù)轉(zhuǎn)換器、 集成電路總線、 串行外設(shè)接口, 基于機(jī)智云平臺(tái)的 STM32 嵌入式物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì), 基于以太網(wǎng)的 STM32 嵌入式系統(tǒng)應(yīng)用設(shè)計(jì), 并在第 4 ~ 13 章給出了應(yīng)用實(shí)例。
為了便于讀者理解, 實(shí)例中給出了兩種工程文件結(jié)構(gòu): 一種是單結(jié)構(gòu)文件, 是較簡單結(jié)構(gòu)的工程文件, 書中均給出了程序代碼, 利于讀者快速掌握; 第二種是結(jié)構(gòu)化的編程方法, 更適用于實(shí)際工程應(yīng)用, 在第 4 章的 GPIO 功能設(shè)計(jì)中詳細(xì)給出了編程方法和調(diào)試結(jié)果, 可幫助讀者培養(yǎng)良好的編程習(xí)慣。 本書全部實(shí)例都經(jīng)過調(diào)試, 可正常運(yùn)行。
本書適合作為高等工科院校電子信息、 計(jì)算機(jī)、 自動(dòng)化、 測(cè)控、 機(jī)電一體化等專業(yè)的嵌入式控制、 單片機(jī)原理及設(shè)計(jì)等課程的教材。 由于本書涉及大量工程領(lǐng)域相關(guān)內(nèi)容, 也適于嵌入式單片機(jī) STM32 的初學(xué)者及有一定嵌入式應(yīng)用基礎(chǔ)的電子工程技術(shù)人員使用。
嵌入式單片機(jī) STM32 是以 ARM 為內(nèi)核架構(gòu), 基于 Cortex - M3 內(nèi)核的嵌入式微控制器。其集成度高, 外圍電路簡單, 配合 ST 公司提供的標(biāo)準(zhǔn)庫, 開發(fā)者可以快速開發(fā)高可靠性的工業(yè)級(jí)產(chǎn)品, 自推出以來就受到重視并獲得廣泛應(yīng)用。 STM32 單片機(jī)技術(shù)的開發(fā)應(yīng)用也逐漸成為高等院校計(jì)算機(jī)、 電氣工程、 自動(dòng)化、 機(jī)電一體化、 測(cè)控等專業(yè)學(xué)生必須掌握的技術(shù)之一。 本書介紹的嵌入式單片機(jī) STM32F103 RBT6 是 32 位的 ARM Cortex - M3 內(nèi)核, 集成了128KB Flash 和 20KB SRAM 以及豐富強(qiáng)大的硬件接口電路, 運(yùn)行頻率可達(dá) 72MHz。
本書第 1 章介紹嵌入式系統(tǒng)及 STM32 單片機(jī)相關(guān)概念、 應(yīng)用、 發(fā)展趨勢(shì); 第 2 章介紹嵌入式單片機(jī)硬件基礎(chǔ); 第 3 章介紹嵌入式單片機(jī)軟件開發(fā)基礎(chǔ)。 在此基礎(chǔ)上, 第 4 章 ~ 第11 章, 分別針對(duì) STM32 可實(shí)現(xiàn)的各種功能模塊 ( 通用功能輸入輸出 ( GPIO) 、 中斷、 串行通信、 定時(shí)器、 DMA 傳輸、 A /D 轉(zhuǎn)換、 I2 C 總線、 SPI 總線) , 闡述其結(jié)構(gòu)及應(yīng)用設(shè)計(jì)方法。第 12 章和 13 章設(shè)計(jì)了 STM32 網(wǎng)絡(luò)應(yīng)用系統(tǒng), 分別為基于機(jī)智云平臺(tái)的 STM32 嵌入式物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)和基于以太網(wǎng)的 STM32 嵌入式系統(tǒng)應(yīng)用設(shè)計(jì), 方便讀者了解和掌握嵌入式系統(tǒng)的互聯(lián)網(wǎng)設(shè)計(jì)和開發(fā)方法。
本書各章內(nèi)容貫穿了兩個(gè)主題, 一是 STM32 單片機(jī)的結(jié)構(gòu)及工作原理, 二是嵌入式STM32 的開發(fā)及實(shí)踐。 第 4 ~ 10 章的應(yīng)用實(shí)例均給出兩種工程文件結(jié)構(gòu): 第一種是單結(jié)構(gòu)的工程文件設(shè)計(jì)方法, 書中均給出文件結(jié)構(gòu)及程序代碼, 便于讀者學(xué)習(xí)和快速掌握本章內(nèi)容;第二種是多結(jié)構(gòu)化的編程方法, 利于與其他外設(shè)融合, 綜合開發(fā)應(yīng)用系統(tǒng)功能。 為幫助讀者培養(yǎng)良好的編程習(xí)慣, 在第 4 章 GPIO 功能設(shè)計(jì)中詳細(xì)給出結(jié)構(gòu)化的編程方法。 鑒于篇幅有限, 其他章節(jié)的多結(jié)構(gòu)化設(shè)計(jì)實(shí)例均給出工程文件結(jié)構(gòu)及流程圖。
本書結(jié)合編者多年的教學(xué)經(jīng)驗(yàn), 將理論實(shí)踐一體化的教學(xué)方式融入其中。 書中實(shí)例開發(fā)過程用到的是目前使用最廣的正點(diǎn)原子 Mini STM32 的開發(fā)板 STM32F103, 由此開發(fā)各種功能,書中實(shí)例均進(jìn)行了調(diào)試。 讀者也可以結(jié)合實(shí)際或者手里現(xiàn)有的開發(fā)板開展實(shí)驗(yàn), 均能獲得實(shí)驗(yàn)結(jié)果。 實(shí)踐案例由淺入深, 層層遞進(jìn), 在幫助讀者快速掌握某一外設(shè)功能的同時(shí), 有效融合其他外部設(shè)備, 如按鍵、 觸摸屏、 各類傳感器等設(shè)計(jì)嵌入式系統(tǒng), 體現(xiàn)學(xué)習(xí)的系統(tǒng)性。
本書由張淑清、 胡永濤、 張立國、 姜安琦、 董明如、 李梅梅編著。 其中, 張淑清編寫第1 ~ 3 章, 胡永濤編寫第 4 ~ 5 章, 張立國編寫第 6 章, 董明如編寫第 7 ~ 8 章, 姜安琦和李梅梅編寫第 9 ~ 13 章。
本書的程序調(diào)試和實(shí)驗(yàn)工作由胡孟飛、 姜安琦、 李梅梅、 李盼、楊麗君、 楊振寧、 段曉寧、 陳榮飛、 董偉等完成。吳希軍、 梁振虎、 胡碩、 蘇連成、 趙立興、 閆朝陽、 溫淑煥等為本書的編寫提出了許多寶貴的意見。 張曉文、 張!、 左一格、 劉婉、 胥鳳嬌、 苑世玉、 要俊波等為本書做了許多校對(duì)工作。編 者
前 言
第 1 章 嵌入式系統(tǒng)簡介 1
1. 1 嵌入式系統(tǒng)特點(diǎn)及發(fā)展趨勢(shì) 1
1. 1. 1 嵌入式系統(tǒng)特點(diǎn)及應(yīng)用領(lǐng)域 1
1. 1. 2 嵌入式系統(tǒng)發(fā)展趨勢(shì) 2
1. 2 嵌入式處理器 ARM Cortex - M3
特點(diǎn) 3
1. 3 STM32 系列微控制器 4
1. 3. 1 STM32 系列單片機(jī) 4
1. 3. 2 STM32F10x 系列單片機(jī) 5
1. 3. 3 STM32 系列單片機(jī)開發(fā)工具 6
思考與練習(xí) 6
第 2 章 嵌入式單片機(jī) STM32
硬件基礎(chǔ) 8
2. 1 STM32 系列單片機(jī)外部結(jié)構(gòu) 8
2. 1. 1 STM32 系列單片機(jī)命名規(guī)則 8
2. 1. 2 STM32 系列單片機(jī)引腳功能 9
2. 2 STM32 系列單片機(jī)內(nèi)部結(jié)構(gòu) 10
2. 2. 1 STM32F103 處理器內(nèi)部總線
結(jié)構(gòu) 10
2. 2. 2 STM32F103 處理器內(nèi)部時(shí)鐘
系統(tǒng) 12
2. 2. 3 STM32F103 處理器內(nèi)部復(fù)位
系統(tǒng) 13
2. 2. 4 STM32F103 處理器內(nèi)部存儲(chǔ)器
結(jié)構(gòu) 14
2. 3 STM32F103 單片機(jī)輸入輸出口 16
2. 4 STM32F103 最小系統(tǒng)設(shè)計(jì) 18
思考與練習(xí) 20
第 3 章 嵌入式單片機(jī) STM32 軟件開發(fā)
基礎(chǔ) 21
3. 1 Cortex - M3 微控制器軟件接口標(biāo)準(zhǔn)
CMSIS 21
3. 1. 1 CMSIS 概述 21
3. 1. 2 STM32F10x 標(biāo)準(zhǔn)外設(shè)庫 22
3. 2 基于 MDK 和標(biāo)準(zhǔn)庫的 STM32 軟件開發(fā)
過程 25
3. 3 基于 MDK5 的 STM32 軟件開發(fā)過程 32
思考與練習(xí) 35
第 4 章 STM32 單片機(jī)的通用功能輸入
輸出 ( GPIO) 37
4. 1 STM32F10x 的 IO 端口的組成及功能 37
4. 1. 1 STM32F10x 的 IO 端口的基本組成
結(jié)構(gòu) 37
4. 1. 2 通用功能輸入輸出 ( GPIO) 38
4. 1. 3 復(fù)用功能輸入輸出 ( AFIO) 38
4. 1. 4 外部中斷/喚醒功能 38
4. 2 GPIO 常用庫函數(shù) 39
4. 3 GPIO 使用流程 43
4. 3. 1 普通 GPIO 配置 43
4. 3. 2 IO 復(fù)用功能 AFIO 配置 43
4. 4 GPIO 應(yīng)用設(shè)計(jì)實(shí)例 45
4. 4. 1 GPIO 應(yīng)用實(shí)例 1: 系統(tǒng)工作
指示燈 46
4. 4. 2 GPIO 應(yīng)用實(shí)例 2: 開關(guān)量狀態(tài)
監(jiān)測(cè) 49
思考與練習(xí) 58
第 5 章 STM32 單片機(jī)外部中斷
EXTI 59
5. 1 中斷的相關(guān)概念 59
5. 2 STM32F103 中斷系統(tǒng)組成結(jié)構(gòu) 60
5. 2. 1 中斷源及中斷向量 60
5. 2. 2 外部中斷系統(tǒng)結(jié)構(gòu) 63
5. 3 中斷控制 64
5. 3. 1 中斷屏蔽控制 64
5. 3. 2 中斷優(yōu)先級(jí)控制 65
5. 4 STM32 中斷控制庫函數(shù) 66
5. 4. 1 嵌套向量中斷控制器 ( NVIC) 庫
函數(shù) 66
Ⅳ
目 錄
5. 4. 2 STM32 外部中斷 EXTI 庫函數(shù) 70
5. 5 外部中斷使用流程 72
5. 5. 1 NVIC 設(shè)置 72
5. 5. 2 中斷端口配置 73
5. 5. 3 中斷處理 73
5. 6 STM32 外部中斷應(yīng)用設(shè)計(jì)實(shí)例 75
5. 6. 1 外部中斷應(yīng)用實(shí)例 1: 按鍵控制
LED 模擬手術(shù)室工作狀態(tài)指示 75
5. 6. 2 外部中斷應(yīng)用實(shí)例 2: 煙霧監(jiān)測(cè)
緊急報(bào)警 79
思考與練習(xí) 81
第 6 章 STM32 通用同步/異步通信 82
6. 1 串行通信簡介 82
6. 1. 1 串行通信與并行通信 82
6. 1. 2 串行通信方式 82
6. 1. 3 串行異步通信和串行同步通信 82
6. 1. 4 串行異步通信的數(shù)據(jù)傳輸形式 83
6. 1. 5 波特率 83
6. 2 STM32 的 USART 的結(jié)構(gòu)及工作方式 83
6. 2. 1 STM32 的 USART 的結(jié)構(gòu) 83
6. 2. 2 STM32 串行異步通信的工作
方式 85
6. 3 USART 常用庫函數(shù) 86
6. 4 USART 使用流程 89
6. 5 USART 應(yīng)用設(shè)計(jì)實(shí)例 91
6. 5. 1 串行異步通信應(yīng)用實(shí)例 1: 收發(fā)
信息 91
6. 5. 2 串行異步通信應(yīng)用實(shí)例 2: 上位
機(jī)控制 LED 亮滅 94
6. 6 串行通信接口抗干擾設(shè)計(jì) 97
6. 6. 1 TTL 電平通信接口 97
6. 6. 2 標(biāo)準(zhǔn)串行通信接口 RS - 232C 97
6. 6. 3 RS - 485 雙機(jī)通信接口 98
思考與練習(xí) 99
第 7 章 STM32 通用定時(shí)器 100
7. 1 STM32 定時(shí)/計(jì)數(shù)器概述 100
7. 2 STM32 通用定時(shí)器的結(jié)構(gòu) 102
7. 2. 1 時(shí)鐘源 102
7. 2. 2 通用定時(shí)器的功能寄存器 103
7. 2. 3 通用定時(shí)器的外部觸發(fā)及
輸入/輸出通道 104
7. 3 STM32 通用定時(shí)器的功能 104
7. 3. 1 定時(shí)功能 105
7. 3. 2 計(jì)數(shù)功能 106
7. 4 通用定時(shí)器常用庫函數(shù) 107
7. 5 通用定時(shí)器使用流程 113
7. 5. 1 NVIC 設(shè)置 113
7. 5. 2 TIM 中斷配置 113
7. 5. 3 定時(shí)器中斷處理程序 114
7. 6 通用定時(shí)器應(yīng)用設(shè)計(jì) 114
7. 6. 1 定時(shí)器設(shè)計(jì)實(shí)例 1: 精確
延時(shí) 114
7. 6. 2 定時(shí)器設(shè)計(jì)實(shí)例 2: 串行口定時(shí)
上傳信息 119
思考與練習(xí) 121
第 8 章 STM32 直接存儲(chǔ)器存取
DMA 122
8. 1 DMA 簡介 122
8. 2 STM32 的 DMA 結(jié)構(gòu) 122
8. 3 DMA 的工作過程 124
8. 4 DMA 常用庫函數(shù) 125
8. 5 DMA 使用流程 130
8. 6 DMA 應(yīng)用設(shè)計(jì)實(shí)例: 數(shù)據(jù)傳輸 131
思考與練習(xí) 141
第 9 章 STM32 的模/數(shù)轉(zhuǎn)換器 142
9. 1 STM32 應(yīng)用系統(tǒng)簡介 142
9. 1. 1 STM32 應(yīng)用系統(tǒng)輸入/輸出
通道 142
9. 1. 2 ADC 的性能指標(biāo) 143
9. 2 STM32 的 ADC 結(jié)構(gòu) 144
9. 3 ADC 的工作模式 146
9. 3. 1 開關(guān)、 時(shí)鐘及通道 146
9. 3. 2 模式控制 147
9. 3. 3 中斷和 DMA 請(qǐng)求 148
9. 3. 4 其他功能 148
9. 4 ADC 常用庫函數(shù) 149
9. 5 ADC 使用流程 155
9. 6 ADC 應(yīng)用設(shè)計(jì) 156
9. 6. 1 ADC 應(yīng)用實(shí)例 1: 電壓采集及
傳輸 156
9. 6. 2 ADC 應(yīng)用實(shí)例 2: 模擬數(shù)字量
綜合測(cè)控系統(tǒng) 163
思考與練習(xí) 167
第 10 章 STM32 的集成電路總線
I2 C 168
10. 1 I2 C 總線通信簡介