本書基于ST公司的STM32芯片,包括8個項目、19個任務,分別介紹LED控制設計與實現、跑馬燈控制設計與實現、數碼管顯示設計與實現、控鍵控制設計與實現、定時器應用設計與實現、串行通信設計與實現、模數轉換設計與實現以及嵌入式智能車設計與實現等內容,涵蓋了嵌入式系統的基本知識和嵌入式應用開發的基本內容。
本書引入Proteus仿真軟件,采用“任務驅動、做中學”的編寫思路,每個任務均將相關知識和職業崗位技能融合在一起,將知識、技能的學習結合任務完成過程來進行。
本書可作為高等院校嵌入式技術與應用、物聯網應用技術等電子信息類專業嵌入式課程的教材,也可作為廣大智能電子產品制作愛好者的自學用書。
1、名師打造精品教材,提供與教材配套的微課資源和基于STM32的實訓模塊。
2、采用“項目引入、任務驅動”的編寫思路,從職業崗位技能出發,項目銜接緊湊且螺旋上升,成為知識點的有效支撐,逐漸深化知識點。
3、全新的仿真教學模式,可以作為技能大賽“嵌入式技術與應用開發”賽項訓練教材。
郭志勇,教授,任職于安徽電子信息職業技術學院信息與智能工程系,編寫過多本計算機教材。《單片機應用技術項目教程(C語言版)》前兩版被多所學校選用,銷量穩定。
項目一 LED控制設計與實現 1
1.1 任務1 新建一個基于STM32固件庫的工程模板 1
1.1.1 新建基于STM32固件庫的Keil μVision4工程模板 1
1.1.2 認識STM32固件庫 11
1.1.3 STM32固件庫關鍵子目錄和文件 12
1.2 任務2 點亮一個LED 15
1.2.1 用Proteus設計第 一個STM32的LED控制電路 15
1.2.2 開發第 一個基于工程模板的Keil μVision4工程 23
1.2.3 位操作 25
1.3 認識Arm-STM32 26
1.3.1 嵌入式系統 26
1.3.2 Arm Cortex-M3處理器 28
1.3.3 STM32系列處理器 29
1.4 任務3 LED閃爍控制 31
1.4.1 LED閃爍控制設計與實現 31
1.4.2 extern 變量聲明 32
1.4.3 Keil μVision4文本美化 33
【技能訓練1-1】音頻產生器 35
關鍵知識點小結 36
問題與討論 38
項目二 跑馬燈控制設計與實現 39
2.1 任務4 LED循環點亮控制 39
2.1.1 認識STM32的I/O口 39
2.1.2 STM32的GPIO初始化和輸入輸出庫函數 45
2.1.3 LED循環點亮控制設計 47
【技能訓練2-1】GPIO_SetBits ()和GPIO_ResetBits ()函數應用 49
2.2 Cortex-M3的編程模式 50
2.2.1 Cortex-M3工作模式及狀態 50
2.2.2 Cortex-M3寄存器組 51
2.2.3 Cortex-M3特殊功能寄存器組 54
2.3 任務5 跑馬燈設計與實現 56
2.3.1 跑馬燈電路設計 56
2.3.2 跑馬燈程序設計、運行與調試 57
2.3.3 C語言中的預處理 59
2.3.4 結構體 61
【技能訓練2-2】結構體應用——GPIO端口初始化 62
2.4 STM32結構 63
2.4.1 Cortex-M3處理器結構 63
2.4.2 STM32系統結構 65
2.4.3 STM32時鐘配置 67
【技能訓練2-3】基于寄存器的跑馬燈設計 72
關鍵知識點小結 73
問題與討論 75
項目三 數碼管顯示設計與實現 76
3.1 任務6 數碼管靜態顯示設計與實現 76
3.1.1 認識數碼管 76
3.1.2 數碼管靜態顯示電路設計 78
3.1.3 數碼管靜態顯示程序設計 79
【技能訓練3-1】共陽極LED數碼管應用 81
3.2 STM32存儲器映射 83
3.2.1 認識Cortex-M3存儲器 83
3.2.2 Cortex-M3存儲器映射 84
3.2.3 STM32存儲器映射 86
【技能訓練3-2】編寫外部設備文件 89
3.3 任務7 數碼管動態掃描顯示設計與實現 91
3.3.1 數碼管動態掃描顯示電路設計 92
3.3.2 數碼管動態掃描顯示程序設計、運行與調試 92
3.3.3 Keil μVision4代碼編輯 94
3.4 I/O口的位操作與實現 99
3.4.1 位帶區與位帶別名區 99
3.4.2 位帶操作 100
3.4.3 I/O口位帶操作的宏定義 102
3.4.4 I/O口的位操作實現 105
【技能訓練3-3】I/O口的位操作應用 106
關鍵知識點小結 107
問題與討論 108
項目四 按鍵控制設計與實現 109
4.1 任務8 按鍵控制LED設計與實現 109
4.1.1 認識嵌入式應用技術與開發的核心板 109
4.1.2 按鍵控制LED電路設計 110
4.1.3 按鍵控制LED程序設計 113
4.1.4 按鍵控制LED運行與調試 118
【技能訓練4-1】一鍵多功能按鍵識別設計與實現 120
4.2 GPIO和AFIO寄存器地址映射 122
4.2.1 GPIO寄存器地址映射 122
4.2.2 端口復用使用 125
4.2.3 端口復用重映射 126
【技能訓練4-2】串口1(USART1)重映射實現 129
4.3 任務9 中斷方式的按鍵控制設計與實現 130
4.3.1 STM32中斷 130
4.3.2 STM32外部中斷編程 134
4.3.3 中斷方式的按鍵控制程序設計 137
4.3.4 中斷方式的按鍵控制工程搭建、編譯與調試 141
【技能訓練4-3】中斷方式的聲光報警器 141
關鍵知識點小結 144
問題與討論 145
項目五 定時器應用設計與實現 146
5.1 任務10 基于SysTick定時器的1秒延時設計與實現 146
5.1.1 SysTick定時器 146
5.1.2 庫函數中的SysTick相關函數 149
5.1.3 SysTick的關鍵函數編寫 151
5.1.4 基于SysTick定時器的1秒延時設計與實現 153
5.2 任務11 STM32定時器的定時設計與實現 156
5.2.1 認識STM32定時器 156
5.2.2 STM32定時器與定時相關的寄存器 157
5.2.3 STM32定時器相關的庫函數 162
5.2.4 STM32定時器的定時設計 165
【技能訓練5-1】基于寄存器的STM32定時器定時設計與實現 167
5.3 任務12 PWM輸出控制電機 169
5.3.1 STM32的PWM輸出相關寄存器 169
5.3.2 STM32的PWM輸出編程思路 172
5.3.3 STM32的PWM輸出相關庫函數 174
5.3.4 PWM輸出控制電機設計 177
【技能訓練5-2】基于寄存器的PWM輸出控制電機設計與實現 180
關鍵知識點小結 181
問題與討論 183
項目六 串行通信設計與實現 184
6.1 STM32的串行通信 184
6.1.1 串行通信基本知識 184
6.1.2 認識STM32的USART串口 186
6.1.3 STM32串口的相關寄存器 187
6.2 任務13 USART串口通信設計 190
6.2.1 STM32串口的相關函數 190
6.2.2 STM32的USART1串口通信設計 194
6.2.3 STM32串行通信設計與調試 198
【技能訓練6-1】基于寄存器的STM32串行通信設計 198
6.3 任務14 STM32串口無線傳輸設計與實現 202
6.3.1 基于Wi-Fi的STM32串口無線傳輸電路設計 202
6.3.2 基于ZigBee的STM32串口無線傳輸電路設計 204
6.3.3 嵌入式智能車通信協議 205
6.3.4 基于寄存器的STM32串口無線傳輸程序設計 207
關鍵知識點小結 214
問題與討論 215
項目七 模數轉換設計與實現 216
7.1 STM32的模數轉換 216
7.1.1 STM32的模數轉換簡介 216
7.1.2 ADC相關的寄存器 218
7.2 任務15 基于寄存器的STM32模數轉換設計 223
7.2.1 STM32的ADC設置 223
7.2.2 基于寄存器的STM32模數轉換設計 225
7.2.3 基于寄存器的STM32模數轉換運行與調試 233
7.3 任務16 基于庫函數的STM32模數轉換設計 234
7.3.1 ADC相關的庫函數 234
7.3.2 基于庫函數的STM32模數轉換程序設計 235
7.3.3 基于庫函數的STM32模數轉換運行與調試 236
關鍵知識點小結 237
問題與討論 238
項目八 嵌入式智能車設計與實現 239
8.1 嵌入式智能車 239
8.1.1 認識嵌入式智能車 239
8.1.2 嵌入式智能車任務板 241
8.1.3 嵌入式智能車循跡板 246
8.2 任務17 嵌入式智能車巡航控制設計 248
8.2.1 嵌入式智能車電機驅動電路 249
8.2.2 電機正反轉和速度控制程序設計 252
8.2.3 嵌入式智能車停止、前進和后退程序設計 256
8.2.4 嵌入式智能車循跡、左轉和右轉程序設計 260
【技能訓練8-1】嵌入式智能車巡航控制 268
8.3 任務18 嵌入式智能車標志物控制設計 270
8.3.1 道閘標志物控制設計 270
8.3.2 LED顯示標志物控制設計 271
8.3.3 基于紅外線的標志物控制設計 274
8.3.4 智能路燈控制設計 278
8.3.5 超聲波測距設計 285
8.3.6 雙色燈控制程序設計 288
【技能訓練8-2】嵌入式智能車標志物控制 289
8.4 任務19 嵌入式智能車綜合控制設計 292
8.4.1 語音播報標志物控制設計 293
8.4.2 嵌入式智能車控制運輸車標志物設計 296
8.4.3 編寫嵌入式智能車的任務文件 297
8.4.4 編寫嵌入式智能車的主文件 303
8.4.5 嵌入式智能車綜合控制工程搭建、編譯、運行與調試 306
8.4.6 嵌入式智能車綜合控制設計經驗和技巧 307
關鍵知識點小結 308
問題與討論 309
參考文獻 310