目 錄
前言
第一部分 基礎篇
第1章 如何安裝KEIL5 2
1.1 溫馨提示 2
1.2 獲取KEIL5安裝包 2
1.3 開始安裝KEIL5 3
1.4 安裝STM32芯片包 5
第2章 如何用DAP仿真器下載程序 7
2.1 仿真器簡介 7
2.2 硬件連接 7
2.3 仿真器配置 8
2.4 選擇目標板 9
2.5 下載程序 10
第3章 如何用串口下載程序 11
3.1 安裝USB轉串口驅動 11
3.2 硬件連接 11
3.3 開始下載 12
3.4 ISP一鍵下載原理分析 14
3.4.1 ISP簡介 14
3.4.2 ISP普通下載 14
3.4.3 BOOT配置 15
3.4.4 ISP一鍵下載 15
第4章 初識STM32 17
4.1 什么是STM32 17
4.2 STM32能做什么 17
4.2.1 智能手環(huán) 18
4.2.2 微型四軸飛行器 19
4.2.3 淘寶眾籌 19
4.3 STM32怎么選型 20
4.3.1 STM32分類 20
4.3.2 STM32命名方法 21
4.3.3 選擇合適的MCU 21
第5章 什么是寄存器 24
5.1 STM32芯片外觀 24
5.2 芯片里面有什么 25
5.3 存儲器映射 27
5.4 寄存器映射 30
5.4.1 STM32的外設地址映射 31
5.4.2 C語言對寄存器的封裝 33
第6章 新建工程——寄存器版 38
6.1 新建本地工程文件夾 38
6.2 新建工程 39
6.3 下載程序 42
第7章 使用寄存器點亮LED 43
7.1 GPIO簡介 43
7.2 GPIO框圖剖析 43
7.2.1 基本結構分析 43
7.2.2 GPIO工作模式 47
7.3 實驗:使用寄存器點亮LED 48
7.3.1 硬件連接 49
7.3.2 啟動文件 50
7.3.3 stm32f10x.h文件 51
7.3.4 main文件 52
7.3.5 下載驗證 56
第8章 自己寫庫——構建庫函數(shù)雛形 57
8.1 什么是STM32函數(shù)庫 57
8.2 為什么采用庫來開發(fā)及學習 58
8.3 實驗:構建庫函數(shù)雛形 58
8.3.1 外部寄存器結構體定義 59
8.3.2 外設存儲器映射 60
8.3.3 外設聲明 60
8.3.4 定義位操作函數(shù) 62
8.3.5 定義初始化結構體 65
8.3.6 定義引腳模式的枚舉類型 65
8.3.7 定義GPIO初始化函數(shù) 69
8.3.8 全新面貌,使用函數(shù)點亮LED 72
8.3.9 下載驗證 73
8.3.10 總結 73
第9章 初識STM32標準庫 75
9.1 CMSIS標準及庫層次關系 75
9.1.1 庫目錄、文件簡介 76
9.1.2 庫各文件間的關系 81
9.2 使用幫助文檔 81
9.2.1 常用官方資料 81
9.2.2 初識庫函數(shù) 83
第10章 新建工程——庫函數(shù)版 85
10.1 新建本地工程文件夾 85
10.2 新建工程 86
第11章 GPIO輸出——使用固件庫點亮LED 93
11.1 硬件設計 93
11.2 軟件設計 93
11.2.1 編程要點 94
11.2.2 代碼分析 94
11.2.3 下載驗證 99
11.3 STM32標準庫補充知識 99
第12章 GPIO輸入——按鍵檢測 102
12.1 硬件設計 102
12.2 軟件設計 103
12.2.1 編程要點 103
12.2.2 代碼分析 103
12.3 下載驗證 105
第13章 GPIO——位帶操作 106
13.1 位帶簡介 106
13.1.1 外設位帶區(qū) 106
13.1.2 SRAM位帶區(qū) 107
13.1.3 位帶區(qū)和位帶別名區(qū)地址轉換 107
13.2 GPIO位帶操作 108
第14章 啟動文件 111
14.1 啟動文件簡介 111
14.2 查找ARM匯編指令 111
14.3 啟動文件代碼講解 111
第15章 RCC——使用HSE/HSI配置時鐘 118
15.1 RCC主要作用——時鐘部分 118
15.2 RCC框圖剖析——時鐘部分 118
15.2.1 系統(tǒng)時鐘 118
15.2.2 其他時鐘 122
15.3 配置系統(tǒng)時鐘實驗 123
15.3.1 使用HSE 123
15.3.2 使用HSI 123
15.3.3 硬件設計 123
15.3.4 軟件設計 124
15.3.5 下載驗證 128
第16章 STM32中斷應用概覽 130
16.1 異常類型 130
16.2 NVIC簡介 131
16.2.1 NVIC寄存器簡介 131
16.2.2 NVIC 中斷配置固件庫 132
16.3 中斷優(yōu)先級 132
16.3.1 優(yōu)先級定義 132
16.3.2 優(yōu)先級分組 132
16.4 中斷編程 133
第17章 EXTI——外部中斷/事件控制器 135
17.1 EXTI簡介 135
17.2 EXTI功能框圖剖析 135
17.3 中斷/事件線 137
17.4 EXTI初始化結構體詳解 138
17.5 外部中斷控制實驗 138
17.5.1 硬件設計 139
17.5.2 軟件設計 139
17.5.3 下載驗證 143
第18章 SysTick——系統(tǒng)定時器 144
18.1 SysTick簡介 144
18.2 SysTick寄存器介紹 144
18.3 SysTick定時實驗 145
18.3.1 硬件設計 145
18.3.2 軟件設計 145
18.3.3 下載驗證 152
第19章 通信的基本概念 153
19.1 串行通信與并行通信 153
19.2 全雙工、半雙工及單工通信 154
19.3 同步通信與異步通信 154
19.4 通信速率 155
第20章 USART——串口通信 156
20.1 串口通信協(xié)議簡介 156
20.1.1 物理層 156
20.1.2 協(xié)議層 159
20.2 STM32的USART簡介 160
20.3 USART功能框圖剖析 161
20.4 USART初始化結構體詳解 165
20.5 USART1接發(fā)通信實驗 166
20.5.1 硬件設計 166
20.5.2 軟件設計 167
20.5.3 下載驗證 171
20.6 使用USART1指令控制R