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