1.1 從單片機到嵌入式系統 1
1.1.1 單片機系統 1
1.1.2 嵌入式系統 2
1.2 精簡指令集計算機與復雜指令集計算機 5
1.3 普林斯頓結構和哈佛結構 6
1.3.1 普林斯頓結構 6
1.3.2 哈佛結構 8
1.4 ARM公司及其微處理器 8
1.4.1 ARM公司簡介 9
1.4.2 ARM的產品體系 10
1.4.3 ARM Cortex-M系列處理器 12
1.5 STM32F103系列微控制器 13
2.1宏指令的使用及其意義 17
2.2 STM32嵌入式C語言編程中幾個重要的關鍵字 21
2.3 STM32嵌入式C語言編程的基本數據類型 22
2.4 結構體與結構體指針 24
2.5 枚舉 25
2.6 C語言編程的代碼格式 26
3.1 CMSIS與STM32標準外設庫 28
3.1.1 ARM Cortex微控制器軟件接口標準CMSIS 28
3.1.2 STM32標準外設庫 29
3.1.3 STM32標準外設庫的命名規(guī)則 33
3.2 STM32嵌入式開發(fā)板簡介 35
3.3 仿真器 35
3.3.1 仿真器的分類 36
3.3.2 JTAG和SWD接口 37
3.4 軟件集成開發(fā)環(huán)境 38
3.5 新建工程模板 39
3.5.1 新建本地文件夾 39
3.5.2 在MDK中新建項目 40
3.5.3 MDK工程項目配置 41
3.5.4 編譯和下載程序 44
4.1 相關知識 47
4.1.1 STM32芯片架構 47
4.1.2 存儲器映射 49
4.1.3 寄存器映射 51
4.1.4 GPIO 簡介 56
4.2 項目實施 56
4.2.1 硬件電路實現 56
4.2.2 程序設計思路 56
4.2.3 程序代碼分析 57
4.3 拓展項目1LED流水燈 60
4.3.1 拓展項目1要求 60
4.3.2 拓展項目1實施 60
5.1 相關知識 63
5.1.1 GPIO的基本結構 63
5.1.2 GPIO的工作模式 64
5.1.3 GPIO的初始化及標準外設庫函數 66
5.1.4 STM32F10x微控制器的系統時鐘 66
5.2 項目實施 70
5.2.1 硬件電路實現 70
5.2.2 程序設計思路 70
5.2.3程序代碼分析 71
5.3 拓展項目2按鍵控制LED流水燈 74
5.3.1 拓展項目2要求 74
5.3.2 拓展項目2實施 74
6.1 相關知識 77
6.1.1 STM32F10x微控制器的位帶 77
6.1.2 LCD12864基礎 80
6.1.3 數碼管顯示原理 82
6.2 項目實施 83
6.2.1 硬件電路實現 83
6.2.2 程序設計思路 83
6.2.3 程序代碼分析 83
6.3 拓展項目3數碼管顯示 89
6.3.1 拓展項目3要求 89
6.3.2 拓展項目3實施 89
7.1 相關知識 94
7.1.1 STM32F10x微控制器的中斷控制器 94
7.1.2 STM32F10x微控制器的外部中斷 97
7.1.3 外部中斷編程涉及的標準外設庫函數 100
7.2 項目實施 101
7.2.1 硬件電路實現 101
7.2.2 程序設計思路 102
7.2.3 程序代碼分析 103
7.3 拓展項目4中斷按鍵控制流水燈 108
7.3.1 拓展項目4要求 108
7.3.2 拓展項目4實施 108
8.1 相關知識 110
8.1.1 SysTick定時器 110
8.1.2 SysTick的相關寄存器及函數 111
8.1.3 利用SysTick定時器實現精確延時 112
8.2 項目實施 114
8.2.1 硬件電路實現 114
8.2.2 程序設計思路 114
8.2.3 程序代碼分析 115
8.3 拓展項目5數碼管顯示倒計時 119
8.3.1 拓展項目5要求 119
8.3.2 拓展項目5實施 119
9.1 相關知識 124
9.1.1 前后臺系統與實時操作系統 124
9.1.2 狀態(tài)機編程思想 126
9.1.3 狀態(tài)機編程的實現方法 128
9.2 項目實施 130
9.2.1 硬件電路實現 130
9.2.2 程序設計思路 131
9.2.3 程序代碼分析 132
9.3 拓展項目6簡易時鐘 139
9.3.1 拓展項目6要求 139
9.3.2 拓展項目6實施 139
10.1 相關知識 142
10.1.1 通信的相關概念 142
10.1.2 異步串行通信協議 145
10.1.3 STM32的同步/異步收發(fā)器(USART) 146
10.1.4 STM32微控制器的USART編程涉及的標準外設庫函數 148
10.2 項目實施 149
10.2.1 硬件電路實現 149
10.2.2 程序設計思路 149
10.2.3 程序代碼分析 151
10.2.4 使用串口調試助手驗證實驗現象 156
10.3 拓展項目7雙機互控LED燈 157
10.3.1 拓展項目7要求 157
10.3.2 拓展項目7實施 157
11.1 相關知識 159
11.1.1 模/數轉換過程 159
11.1.2 模/數轉換的技術指標 161
11.1.3 逐次逼近型ADC 161
11.1.4 STM32微控制器的ADC模塊 163
11.1.5 STM32微控制器的ADC編程涉及的標準外設庫函數 167
11.2 項目實施 167
11.2.1 硬件電路實現 167
11.2.2 程序設計思路 168
11.2.3 程序代碼分析 168
11.3 拓展項目8利用規(guī)則通道檢測芯片溫度 173
11.3.1 拓展項目8要求 173
11.3.2 拓展項目8實施 173
12.1 相關知識 177
12.1.1 DMA的基本概念 177
12.1.2 STM32F10x微控制器的DMA 178
12.1.3 DMA控制器編程涉及的標準外設庫函數 182
12.2 項目實施 183
12.2.1 硬件電路實現 183
12.2.2 程序設計思路 183
12.2.3 程序代碼分析 184
12.3 拓展項目9M2M數據傳輸 190
12.3.1 拓展項目9要求 190
12.3.2 拓展項目9實施 190
13.1 相關知識 194
13.1.1 STM32F10x微控制器的定時器資源 194
13.1.2 STM32F10x微控制器的定時器 195
13.1.3 STM32F103ZE定時器的輸入/輸出引腳 198
13.1.4 STM32F103定時器的輸入/輸出通道 199
13.1.5 定時器編程涉及的標準外設庫函數 203
13.2 項目實施 204
13.2.1 硬件電路實現 204
13.2.2 程序設計思路 204
13.2.3 程序代碼分析 205
13.3 拓展項目10PWM實現呼吸燈 209
13.3.1 拓展項目10要求 209
13.3.2 拓展項目10實施 209
14.1 相關知識 214
14.1.1 彩色LCD顯示與控制的基本原理 214
14.1.2 彩色LCD顯示器的圖形顯示方法 216
14.1.3 字符漢字的編碼與字模 218
14.1.4 STM32F103微控制器的FSMC 221
14.1.5 電阻觸摸屏的工作原理 223
14.1.6 彩色LCD及觸摸屏的驅動函數 224
14.2 項目實施 225
14.2.1 硬件電路實現 225
14.2.2 程序設計思路 226
14.2.3 程序代碼分析 226
14.3 拓展項目11觸摸屏畫板 235
14.3.1 拓展項目11要求 235
14.3.2 拓展項目11實施 235
15.1 相關知識 236
15.1.1 嵌入式操作系統簡介 237
15.1.2 礐/OS-III的體系結構 239
15.1.3 礐/OS-III的任務管理 239
15.1.4 移植礐/OS-III到STM32F103 242
15.1.5 礐/OS-III編程與裸機編程的區(qū)別 244
15.2 項目實施 246
15.2.1 硬件電路實現 246
15.2.2 程序設計思路 247
15.2.3 程序代碼分析 247
15.3 拓展項目12多傳感器參數檢測系統 251
15.3.1 拓展項目12要求 251
15.3.2 拓展項目12實施 251
16.1 相關知識 253
16.1.1 嵌入式電子產品設計的一般步驟 253
16.1.2 溫濕度傳感器及其驅動 255
16.1.3 RTC實時時鐘 260
16.1.4 ESP8266模塊 263
16.1.5 BH1750FVI光照強度傳感器 264
16.1.6 直流電動機調速控制原理及其驅動 265
16.1.7 步進電動機控制原理及其驅動 265
16.1.8 原子云平臺 266
16.2 項目實施 268
16.2.1 硬件電路實現 268
16.2.2 程序設計思路 268
16.2.3 程序代碼分析 269
16.3 拓展項目13智能風扇控制器的設計 272
16.3.1 拓展項目13要求 272
16.3.2 拓展項目13實施 272
附錄A 標準ASCII碼對照表 274
附錄B 圖形符號對照表 276