全書共16章,分為三部分。第一部分包括第1~4章,講解了Cortex-M0的優(yōu)勢,以及STM32F0軟硬件開發(fā)的條件和STM32F0軟件開發(fā)的固件庫內容。第二部分包括第5~14章,講解了LPC17XX的系統(tǒng)定時器、GPIO、NVIC、UART、I2C、SPI、ADC、DAC、PWM、定時器。第三部分包括第15、16章,是綜合實例與關于RTX操作系統(tǒng)的高級功能介紹。
張燕妮,大連理工大學碩士畢業(yè),長期從事計算機基礎教育/嵌入教育的教學和科研工作,參與了多項企業(yè)合作的橫向課題,具有豐富的嵌入式開發(fā)經驗。
第1章 低成本單片機世界的入侵者――Cortex-M0 1
1.1 相比8位(16位)機為何要選擇Cortex-M0 1
1.1.1 性能對比 2
1.1.2 8位和16位體系結構的缺點 3
1.1.3 Cortex的軟件移植性 3
1.2 如何從8位機過渡到Cortex-M0 4
1.3 編程模型 7
1.3.1 處理器的模式 7
1.3.2 堆棧 8
1.3.3 內核寄存器 8
1.4 存儲器模型 11
1.4.1 存儲區(qū)、類型和屬性 12
1.4.2 存儲器系統(tǒng)的存儲器訪問次序 12
1.4.3 存儲器訪問的行為 13
1.4.4 軟件的存儲器訪問順序 13
1.5 異常模型 14
1.6 電源管理 19
1.7 指令集 20
1.8 Cortex-M0內核外設 23
1.9 STM32F0系列 23
1.10 小結 24
第2章 開發(fā)軟件準備 25
2.1 MDK-ARM開發(fā)環(huán)境 25
2.1.1 ?Vision4 IDE 概述 25
2.1.2 編譯、調試現(xiàn)有MDK工程 26
2.1.3 創(chuàng)建一個Keil新項目 27
2.2 仿真器 36
2.2.1 ST-Link 36
2.2.2 J-Link與U-Link2 37
2.3 WinMerge 37
2.4 小結 39
第3章 硬件基礎 40
3.1 STM32F0產品特征 40
3.2 系統(tǒng)及存儲器概述 41
3.2.1 系統(tǒng)構架 41
3.2.2 存儲器組織 42
3.2.3 啟動配置 42
3.3 電源控制(PWR) 43
3.3.1 電源 43
3.3.2 電源管理器 44
3.3.3 低功耗模式 45
3.3.4 PWR固件庫 46
3.4 復位和時鐘控制(RCC) 46
3.4.1 復位 46
3.4.2 時鐘 47
3.4.3 低功耗模式 51
3.5 RCC固件庫 52
3.6 硬件設計 53
3.7 小結 56
第4章 STM32F0的固件庫 57
4.1 ARM的C語言 57
4.1.1 嵌入式C語言的幾個特殊之處 57
4.1.2 寄存器訪問方式總結 59
4.1.3 struct字節(jié)對齊 60
4.1.4 使用volatile 62
4.1.5 RAM中運行程序 62
4.1.6 軟件結構 64
4.2 CMSIS 65
4.2.1 CMSIS主要構成 65
4.2.2 使用CMSIS 66
4.3 STM32F0xx標準外設庫 67
4.3.1 標準外設庫概述 67
4.3.2 STM32F0xx外設驅動文件說明 68
4.3.3 STM32F0xx的CMSIS文件說明 69
4.3.4 庫文件夾說明 70
4.3.5 固件庫文件 71
4.3.6 MDK ARM中使用固件庫實例 74
4.4 小結 75
第5章 通用I/O(GPIO) 76
5.1 GPIO引腳與功能 76
5.1.1 引腳描述 76
5.1.2 GPIO功能描述 77
5.1.3 通用I/O(GPIO) 79
5.1.4 I/O引腳的復用功能和重映射 79
5.1.5 外部中斷/喚醒線 80
5.1.6 輸入配置 80
5.1.7 輸出配置 80
5.1.8 復用功能配置 80
5.1.9 模擬配置 81
5.1.10 HSE或LSE引腳用作GPIO 81
5.1.11 備份域供電下GPIO引腳的使用 81
5.1.12 GPIO復用功能寄存器 81
5.2 GPIO固件庫 83
5.3 GPIO應用實例 84
5.4 小結 87
第6章 中斷和事件 88
6.1 嵌套向量中斷控制器(NVIC) 88
6.1.1 NVIC概述 88
6.1.2 電平中斷和脈沖中斷 90
6.2 中斷和異常向量 91
6.3 擴展中斷和事件控制器(EXTI) 93
6.3.1 框圖 93
6.3.2 事件管理 94
6.3.3 功能說明 94
6.3.4 外部和內部中斷/事件線映像 95
6.4 EXTI固件庫 96
6.5 EXTI中斷實例 96
6.6 HardFault異常調試實例 98
6.7 小結 99
第7章 通用同步異步收發(fā)器(USART) 100
7.1 USART主要功能 100
7.2 STM32F0x的USART功能實現(xiàn) 101
7.3 USART功能描述 102
7.3.1 USART框圖 102
7.3.2 USART字符描述 103
7.3.3 發(fā)送器 104
7.3.4 接收器 106
7.3.5 多機通信 110
7.3.6 Modbus通信 111
7.3.7 LIN(本地互聯(lián)網(wǎng)絡)模式 112
7.3.8 USART同步模式 113
7.3.9 單線半雙工通信 114
7.3.10 RS-232硬件流控制和RS-485驅動使能 114
7.4 USART中斷 116
7.5 USART固件庫函數(shù) 117
7.6 基于USART實現(xiàn)的多個通信標準 121
7.7 接收不定長數(shù)據(jù)實例 123
7.8 小結 125
第8章 實時時鐘(RTC) 126
8.1 主要特性 126
8.2 STM32F0的RTC功能實現(xiàn) 127
8.3 功能描述 127
8.3.1 RTC框圖 127
8.3.2 被RTC控制的GPIO 128
8.3.3 時鐘和預分頻器 128
8.3.4 實時時鐘和日歷 128
8.3.5 可編程報警 129
8.3.6 RTC初始化及配置 129
8.3.7 讀日歷寄存器 130
8.3.8 復位過程 131
8.3.9 RTC同步 131
8.3.10 RTC參考時鐘檢測 131
8.3.11 RTC平滑數(shù)字校準 132
8.3.12 時間戳功能 132
8.3.13 侵入檢測 132
8.3.14 校準時鐘輸出 133
8.3.15 報警輸出 134
8.4 RTC低功耗模式 134
8.5 RTC中斷 134
8.6 固件庫 135
8.7 鬧鐘報警實例 137
8.8 小結 141
第9章 看門狗 142
9.1 STM32F0看門狗概述 142
9.2 獨立看門狗(IWDG) 143
9.3 窗口看門狗(WWDG) 145
9.4 固件庫 146
9.4.1 IWDG API 146
9.4.2 WWDG固件庫 147
9.5 看門狗實例 148
9.6 小結 149
第10章 定時器 150
10.1 STM32F0定時器實現(xiàn) 150
10.2 功能描述 151
10.2.1 時基單元 152
10.2.2 計數(shù)器 153
10.2.3 時鐘源 154
10.2.4 捕獲/比較通道 155
10.2.5 輸入捕獲模式 156
10.2.6 強制輸出模式 157
10.2.7 輸出比較模式 157
10.2.8 PWM模式 158
10.2.9 互補輸出和死區(qū)插入 160
10.2.10 使用剎車功能 161
10.2.11 產生六步PWM輸出 162
10.2.12 編碼器接口模式 163
10.3 固件庫 164
10.4 SPWM實例 168
10.5 小結 171
第11章 模數(shù)轉換器(ADC) 172
11.1 ADC主要特性 172
11.2 ADC功能描述 173
11.2.1 校準 174
11.2.2 ADC開關控制 174
11.2.3 ADC時鐘 175
11.2.4 ADC配置 176
11.2.5 通道選擇 176
11.2.6 轉換模式 176
11.2.7 啟動與停止轉換 177
11.3 外部觸發(fā)和觸發(fā)極性 178
11.4 數(shù)據(jù)管理 179
11.5 低功耗特性 180
11.6 ADC中斷 181
11.7 ADC固件庫 181
11.8 STM32F05x(07x)的DAC與比較器 183
11.9 USB電壓監(jiān)測 184
11.10 小結 186
第12章 DMA控制 187
12.1 DMA主要特性 187
12.2 DMA功能描述 187
12.2.1 DMA原理 187
12.2.2 可編程的數(shù)據(jù)寬度、數(shù)據(jù)對齊方式和數(shù)據(jù)大小端 190
12.2.3 錯誤管理 190
12.2.4 中斷 190
12.2.5 DMA請求映射 190
12.3 固件庫 191
12.4 基于DMA的ADC采樣 192
12.5 小結 195
第13章 串行外設接口/I2S音頻(SPI/I2S) 196
13.1 簡介 196
13.1.1 SPI主要特點 196
13.1.2 SPI/I2S具體功能實現(xiàn) 197
13.2 SPI功能描述 197
13.2.1 SPI框圖 197
13.2.2 一主、一從通信 198
13.2.3 多從機通信 200
13.2.4 從機選擇(NSS)的引腳管理 200
13.2.5 通信格式 201
13.2.6 SPI的初始化 202
13.2.7 數(shù)據(jù)發(fā)送和接收流程 202
13.2.8 狀態(tài)標志 204
13.2.9 錯誤標志 204
13.3 SPI中斷 205
13.4 SPI固件庫 206
13.5 SPI相互通信實例 207
13.6 小結 209
第14章 I2C接口 210
14.1 I2C的主要特點 210
14.2 I2C功能描述 211
14.2.1 I2C1框圖 211
14.2.2 I2C模式 212
14.2.3 I2C的初始化 212
14.2.4 數(shù)據(jù)收發(fā) 213
14.2.5 I2C從機模式 215
14.2.6 I2C主模式 217
14.3 I2C中斷 219
14.4 I2C固件庫 220
14.5 讀/寫24C02實例 221
14.6 小結 224
第15章 控制器局域網(wǎng)bxCAN 225
15.1 bxCAN概述 225
15.2 bxCAN工作模式 226
15.2.1 初始化模式 227
15.2.2 正常模式 227
15.2.3 睡眠模式(低功耗) 228
15.2.4 測試模式 228
15.2.5 靜默模式 228
15.2.6 環(huán)回模式 228
15.2.7 環(huán)回靜默模式 229
15.3 bxCAN功能描述 229
15.3.1 發(fā)送 229
15.3.2 時間觸發(fā)通信模式 231
15.3.3 接收管理 231
15.3.4 標識符過濾 232
15.3.5 報文存儲 233
15.3.6 錯誤管理 234
15.3.7 位時間特性 234
15.4 bxCAN中斷 235
15.5 bxCAN固件庫 235
15.6 CAN通信實例 237
15.7 小結 241
第16章 RTX實時操作系統(tǒng)應用 242
16.1 RTX概述 242
16.1.1 RTX任務 243
16.1.2 RTX調度 245
16.2 任務通信 247
16.2.1 事件標志 247
16.2.2 互斥量 248
16.2.3 信箱 249
16.3 RTX基礎配置 251
16.4 中斷任務之間的通信實例 252
16.5 小結 254
第17章 USB電源監(jiān)測 255
17.1 需求分析 255
17.2 硬件設計 255
17.3 軟件設計 256
17.4 小結 259