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