嵌入式系統(tǒng)原理及應(yīng)用——基于ARM Cortex-M3內(nèi)核的STM32F103系列微控制器(高等院校信息技術(shù)規(guī)劃教材)
定 價(jià):89 元
- 作者:王益涵、孫憲坤、史志才
- 出版時(shí)間:2016/9/18
- ISBN:9787302441359
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP368.1
- 頁碼:596
- 紙張:膠版紙
- 版次:1
- 開本:10開
本書通過與常見的桌面通用系統(tǒng)比較,引入嵌入式系統(tǒng)的基本概念,主要介紹ARM CortexM3內(nèi)核以及意法半導(dǎo)體公司推出的基于ARM CortexM3內(nèi)核的STM32F103微控制器。
全書共分3篇 第1篇(第1、2章)為系統(tǒng)篇,介紹嵌入式系統(tǒng)及其開發(fā)的基本概念;第2篇(第3、4章)為內(nèi)核篇,分析ARM CortexM3內(nèi)核以及基于ARM CortexM3內(nèi)核的STM32F103微控制器的體系結(jié)構(gòu)、工作原理、編程模型和開發(fā)方法等;第3篇(第5~12章)為片內(nèi)外設(shè)篇,基于STM32F103微控制器講述常用的片上外設(shè)∕接口,包括GPIO、定時(shí)器、EXTI、DMA、ADC、USART、SPI和I2C等,并分別給出在KEIL MDK下采用庫函數(shù)方式使用這些片上外設(shè)∕接口進(jìn)行應(yīng)用開發(fā)的典型案例。
本書適合作為高等院校計(jì)算機(jī)、自動(dòng)化、電子信息等電氣信息類專業(yè)高年級(jí)本科生、研究生嵌入式相關(guān)課程的教材,同時(shí)可供從事嵌入式開發(fā)的技術(shù)和研究人員參考。
本書首先通過與個(gè)人計(jì)算機(jī)(PC)的比較,引出嵌入式系統(tǒng)的基本概念,從零開始、由淺入深引導(dǎo)讀者進(jìn)入嵌入式系統(tǒng)的世界,講解嵌入式系統(tǒng)的開發(fā)過程,然后以目前ARM Cortex-M3內(nèi)核以及意法半導(dǎo)體公司推出的基于ARM Cortex-M3內(nèi)核的STM32F103微控制器為目標(biāo)硬件平臺(tái),按照基本原理、內(nèi)部結(jié)構(gòu)、工作機(jī)制和相關(guān)庫函數(shù)的順序循序漸進(jìn)、逐步展開,詳細(xì)介紹STM32F103微控制器各個(gè)常用片上外設(shè)∕接口(包括GPIO、定時(shí)器、EXTI、DMA、ADC、USART、SPI和I2C等),并給出在嵌入式軟件開發(fā)工具KEIL MDK下使用C語言采用庫函數(shù)方式開發(fā)STM32F103微控制器的典型案例。
為了降低讀者的學(xué)習(xí)成本和學(xué)習(xí)難度,本書不僅提供了書中所有程序的源碼,而且在STM32F103微控制器典型開發(fā)案例中回顧了嵌入式相關(guān)的硬件基礎(chǔ)知識(shí)、C語言編程技巧和方法。針對(duì)目前身邊暫時(shí)沒有STM32F103微控制器硬件的讀者,本書還介紹嵌入式系統(tǒng)的軟件仿真調(diào)試方法,指導(dǎo)讀者在嵌入式軟件開發(fā)工具KEIL MDK下調(diào)試自己編寫的基于STM32F103微控制器的應(yīng)用程序,使讀者無需購買嵌入式硬件開發(fā)板也可以完成對(duì)自己編寫的嵌入式程序的調(diào)試和驗(yàn)證。
本書適合作為高等院校計(jì)算機(jī)、自動(dòng)化、電子信息等電氣信息類專業(yè)高年級(jí)本科生、研究生“嵌入式”相關(guān)課程的教材,同時(shí)可供從事嵌入式開發(fā)的技術(shù)和研究人員參考。尤其面向嵌入式初學(xué)者,本書在調(diào)研和分析當(dāng)前嵌入式開發(fā)工程師的人才需求和能力要求的基礎(chǔ)上,提出了從嵌入式“菜鳥”到嵌入式工程師的進(jìn)階之路。
第1篇系統(tǒng)篇
第1章嵌入式系統(tǒng)概述3
1.1嵌入式系統(tǒng)的定義和特點(diǎn)3
1.1.1嵌入式系統(tǒng)的定義3
1.1.2嵌入式系統(tǒng)和通用計(jì)算機(jī)比較4
1.1.3嵌入式系統(tǒng)的特點(diǎn)5
1.2嵌入式系統(tǒng)的硬件6
1.2.1嵌入式處理器7
1.2.2嵌入式存儲(chǔ)器15
1.2.3嵌入式I/O設(shè)備18
1.2.4嵌入式I/O接口18
1.3嵌入式系統(tǒng)的軟件21
1.3.1無操作系統(tǒng)的嵌入式軟件22
1.3.2帶操作系統(tǒng)的嵌入式軟件24
1.4嵌入式系統(tǒng)的分類27
1.4.1按硬件(嵌入式處理器)劃分27
1.4.2按軟件復(fù)雜度劃分27
1.4.3按實(shí)時(shí)性劃分28
1.4.4按使用對(duì)象劃分28
1.5嵌入式系統(tǒng)的應(yīng)用28
1.5.1國防軍事28
1.5.2工業(yè)控制29
1.5.3消費(fèi)電子30
1.5.4辦公自動(dòng)化產(chǎn)品30
1.5.5網(wǎng)絡(luò)和通信設(shè)備30
1.5.6汽車電子31◆嵌入式系統(tǒng)原理及應(yīng)用目錄1.5.7金融商業(yè)31
1.5.8生物醫(yī)學(xué)32
1.5.9信息家電32
1.6本章小結(jié)34
習(xí)題134
第2章嵌入式系統(tǒng)開發(fā)35
2.1嵌入式系統(tǒng)的開發(fā)環(huán)境、開發(fā)工具和調(diào)試方式35
2.1.1嵌入式系統(tǒng)的開發(fā)環(huán)境35
2.1.2嵌入式系統(tǒng)的開發(fā)工具37
2.1.3嵌入式系統(tǒng)的調(diào)試方式43
2.2嵌入式系統(tǒng)的開發(fā)語言50
2.2.1嵌入式硬件開發(fā)語言50
2.2.2嵌入式軟件開發(fā)語言51
2.3嵌入式系統(tǒng)的開發(fā)過程53
2.3.1需求分析54
2.3.2系統(tǒng)設(shè)計(jì)55
2.3.3系統(tǒng)實(shí)現(xiàn)61
2.3.4系統(tǒng)測(cè)試70
2.3.5系統(tǒng)發(fā)布73
2.4嵌入式開發(fā)工程師之路74
2.4.1嵌入式行業(yè)和人才的現(xiàn)狀分析74
2.4.2嵌入式開發(fā)工程師的能力要求74
2.4.3嵌入式開發(fā)工程師的進(jìn)階之路75
2.5本章小結(jié)77
習(xí)題278
第2篇內(nèi)核篇
第3章ARM CortexM3處理器81
3.1ARM CortexM3組成結(jié)構(gòu)81
3.1.1CortexM3內(nèi)核82
3.1.2調(diào)試系統(tǒng)84
3.2ARM CortexM3總線接口86
3.2.1CortexM3總線接口類型87
3.2.2CortexM3總線連接方案88
3.3ARM CortexM3編程模型89
3.3.1工作狀態(tài)89
3.3.2數(shù)據(jù)類型89
3.3.3寄存器89
3.3.4指令系統(tǒng)93
3.3.5操作模式和特權(quán)分級(jí)96
3.3.6異常和中斷98
3.3.7雙堆棧機(jī)制105
3.4ARM CortexM3存儲(chǔ)器系統(tǒng)107
3.4.1存儲(chǔ)器映射107
3.4.2位帶操作110
3.4.3存儲(chǔ)格式112
3.5ARM CortexM3的低功耗模式113
3.6本章小結(jié)114
習(xí)題3115
第4章基于ARM CortexM3的STM32微控制器117
4.1從CortexM3到基于CortexM3的MCU117
4.2基于CortexM3的STM32系列微控制器概述118
4.2.1產(chǎn)品線118
4.2.2命名規(guī)則124
4.2.3生態(tài)系統(tǒng)125
4.2.4開發(fā)方法131
4.2.5學(xué)習(xí)之路134
4.3STM32F103微控制器基礎(chǔ)136
4.3.1概述136
4.3.2主系統(tǒng)結(jié)構(gòu)137
4.3.3功能模塊139
4.3.4引腳定義140
4.3.5存儲(chǔ)器組織141
4.4STM32F103微控制器的最小系統(tǒng)145
4.4.1電源電路145
4.4.2時(shí)鐘電路148
4.4.3復(fù)位電路149
4.4.4調(diào)試和下載電路150
4.4.5其他151
4.5STM32F103微控制器的時(shí)鐘系統(tǒng)153
4.5.1輸入時(shí)鐘153
4.5.2系統(tǒng)時(shí)鐘155
4.5.3由系統(tǒng)時(shí)鐘分頻得到的其他時(shí)鐘155
4.5.4STM32F10x時(shí)鐘系統(tǒng)相關(guān)庫函數(shù)157
4.6STM32F103微控制器的低功耗模式162
4.6.1睡眠模式163
4.6.2停機(jī)模式163
4.6.3待機(jī)模式164
4.7STM32F103微控制器的安全特性165
4.7.1看門狗165
4.7.2電源檢測(cè)166
4.7.3時(shí)鐘安全系統(tǒng)166
4.8STM32F103微控制器的啟動(dòng)過程167
4.8.1啟動(dòng)過程和啟動(dòng)代碼概述167
4.8.2ARM啟動(dòng)代碼所需匯編語言基礎(chǔ)167
4.8.3STM32F103的啟動(dòng)代碼分析171
4.8.4STM32F103的啟動(dòng)過程分析182
4.9建立第一個(gè)STM32F103應(yīng)用工程185
4.9.1STM32F10x標(biāo)準(zhǔn)外設(shè)庫的下載和認(rèn)知185
4.9.2嵌入式開發(fā)工具的下載和安裝198
4.9.3配置STM32F103工程198
4.9.4編寫用戶程序源代碼206
4.9.5編譯和鏈接STM32F103工程207
4.9.6調(diào)試STM32F103工程208
4.9.7將可執(zhí)行程序下載到STM32F103運(yùn)行215
4.10本章小結(jié)217
習(xí)題4217
第3篇片內(nèi)外設(shè)篇
第5章GPIO221
5.1GPIO概述221
5.2STM32F103的GPIO工作原理221
5.2.1內(nèi)部結(jié)構(gòu)222
5.2.2工作模式224
5.2.3輸出速度224
5.2.4復(fù)用功能重映射225
5.2.5外部中斷映射和事件輸出228
5.2.6主要特性228
5.3STM32F10x的GPIO相關(guān)庫函數(shù)228
5.3.1GPIO_DeInit229
5.3.2GPIO_Init229
5.3.3GPIO_SetBits231
5.3.4GPIO_ResetBits231
5.3.5GPIO_Write232
5.3.6GPIO_ReadOutputDataBit232
5.3.7GPIO_ReadOutputData232
5.3.8GPIO_ReadInputDataBit233
5.3.9GPIO_ReadInputData233
5.3.10GPIO_EXTILineConfig233
5.3.11GPIO_PinRemapConfig234
5.4STM32F103的GPIO開發(fā)實(shí)例——LED閃爍235
5.4.1功能要求235
5.4.2硬件設(shè)計(jì)235
5.4.3軟件流程設(shè)計(jì)236
5.4.4軟件代碼實(shí)現(xiàn)236
5.4.5軟件模擬仿真238
5.4.6下載到硬件運(yùn)行241
5.4.7開發(fā)經(jīng)驗(yàn)小結(jié)——STM32微控制器開發(fā)的一般步驟241
5.5STM32F103的GPIO開發(fā)實(shí)例——按鍵控制LED亮滅241
5.5.1功能要求241
5.5.2硬件設(shè)計(jì)241
5.5.3軟件流程設(shè)計(jì)242
5.5.4軟件代碼實(shí)現(xiàn)243
5.5.5軟件模擬仿真244
5.5.6下載到硬件運(yùn)行246
5.5.7開發(fā)經(jīng)驗(yàn)小結(jié)——使用庫函數(shù)開發(fā)STM32F103的GPIO246
5.6本章小結(jié)247
習(xí)題5248
第6章定時(shí)器249
6.1定時(shí)器概述249
6.1.1延時(shí)的實(shí)現(xiàn)249
6.1.2可編程定時(shí)/計(jì)數(shù)器功能概述251
6.2STM32F103的定時(shí)器概述252
6.3STM32F103的基本定時(shí)器TIM6和TIM7252
6.3.1內(nèi)部結(jié)構(gòu)253
6.3.2時(shí)鐘源253
6.3.3計(jì)數(shù)模式254
6.3.4主要特性254
6.4STM32F103的通用定時(shí)器TIM2—TIM5254
6.4.1內(nèi)部結(jié)構(gòu)254
6.4.2時(shí)鐘源256
6.4.3計(jì)數(shù)模式257
6.4.4輸出比較模式259
6.4.5PWM輸出模式259
6.4.6輸入捕獲模式262
6.4.7PWM輸入模式262
6.4.8單脈沖模式263
6.4.9編碼器接口263
6.4.10主要特性263
6.5STM32F103的高級(jí)定時(shí)器TIM1和TIM8264
6.5.1內(nèi)部結(jié)構(gòu)264
6.5.2時(shí)鐘源264
6.5.3功能描述266
6.5.4主要特性266
6.6STM32F10x定時(shí)器相關(guān)庫函數(shù)266
6.6.1TIM_DeInit267
6.6.2TIM_TimeBaseInit268
6.6.3TIM_OC1Init269
6.6.4TIM_OC2Init270
6.6.5TIM_OC3Init271
6.6.6TIM_OC4Init271
6.6.7TIM_OC1PreloadConfig272
6.6.8TIM_OC2PreloadConfig272
6.6.9TIM_OC3PreloadConfig272
6.6.10TIM_OC4PreloadConfig273
6.6.11TIM_ARRPreloadConfig273
6.6.12TIM_CtrlPWMOutputs274
6.6.13TIM_Cmd274
6.6.14TIM_GetFlagStatus275
6.6.15TIM_ClearFlag275
6.6.16TIM_ITConfig276
6.6.17TIM_GetITStatus276
6.6.18TIM_ClearITPendingBit277
6.7STM32F103定時(shí)器開發(fā)實(shí)例——精確定時(shí)的LED閃爍277
6.7.1功能要求277
6.7.2硬件設(shè)計(jì)277
6.7.3軟件流程設(shè)計(jì)278
6.7.4軟件代碼實(shí)現(xiàn)279
6.7.5軟件模擬仿真281
6.7.6下載到硬件運(yùn)行283
6.7.7開發(fā)經(jīng)驗(yàn)小結(jié)——使用printf在調(diào)試窗口輸出284
6.8STM32F103定時(shí)器開發(fā)實(shí)例——PWM輸出285
6.8.1功能要求285
6.8.2硬件設(shè)計(jì)286
6.8.3軟件流程設(shè)計(jì)286
6.8.4軟件代碼實(shí)現(xiàn)288
6.8.5軟件模擬仿真289
6.8.6下載到硬件運(yùn)行291
6.8.7開發(fā)經(jīng)驗(yàn)小結(jié)——基于無限循環(huán)的嵌入式軟件架構(gòu)291
6.9本章小結(jié)292
習(xí)題6292
第7章中斷293
7.1中斷的基本概念293
7.1.1中斷源294
7.1.2中斷屏蔽294
7.1.3中斷處理過程294
7.1.4中斷優(yōu)先級(jí)296
7.1.5中斷嵌套297
7.1.6中斷的利與弊298
7.2STM32F103中斷系統(tǒng)298
7.2.1嵌套向量中斷控制器NVIC298
7.2.2STM32F103中斷優(yōu)先級(jí)299
7.2.3STM32F103中斷向量表300
7.2.4STM32F103中斷服務(wù)函數(shù)303
7.2.5STM32F103中斷設(shè)置過程304
7.3STM32F103外部中斷/事件控制器EXTI306
7.3.1內(nèi)部結(jié)構(gòu)307
7.3.2工作原理308
7.3.3主要特性309
7.4STM32F10x的NVIC相關(guān)庫函數(shù)309
7.4.1NVIC_PriorityGroupConfig310
7.4.2NVIC_Init310
7.4.3NVIC_DeInit313
7.5STM32F10x的EXTI相關(guān)庫函數(shù)314
7.5.1EXTI_DeInit314
7.5.2EXTI_Init314
7.5.3EXTI_GetFlagStatus316
7.5.4EXTI_ClearFlag316
7.5.5EXTI_GetITStatus317
7.5.6EXTI_ClearITPendingBit317
7.6STM32F103的中斷開發(fā)實(shí)例——按鍵控制LED亮滅318
7.6.1功能要求318
7.6.2硬件設(shè)計(jì)318
7.6.3軟件流程設(shè)計(jì)319
7.6.4軟件代碼實(shí)現(xiàn)320
7.6.5下載到硬件運(yùn)行323
7.6.6開發(fā)經(jīng)驗(yàn)小結(jié)——前/后臺(tái)嵌入式軟件架構(gòu)323
7.7STM32F103的中斷開發(fā)實(shí)例——精確延時(shí)的LED閃爍325
7.7.1功能要求325
7.7.2硬件設(shè)計(jì)325
7.7.3軟件流程設(shè)計(jì)326
7.7.4軟件代碼實(shí)現(xiàn)328
7.7.5軟件代碼分析——volatile331
7.7.6軟件模擬仿真332
7.7.7下載到硬件運(yùn)行334
7.7.8開發(fā)經(jīng)驗(yàn)小結(jié)——改進(jìn)的前/后臺(tái)嵌入式軟件架構(gòu)334
7.8本章小結(jié)336
習(xí)題7336
第8章DMA337
8.1DMA的基本概念337
8.1.1DMA的引入337
8.1.2DMA的定義338
8.1.3DMA傳輸要素338
8.1.4DMA傳輸過程338
8.1.5DMA的特點(diǎn)與應(yīng)用339
8.2STM32F103的DMA工作原理339
8.2.1功能框圖340
8.2.2觸發(fā)通道341
8.2.3優(yōu)先級(jí)344
8.2.4傳輸模式344
8.2.5主要特性344
8.3STM32F10x的DMA相關(guān)庫函數(shù)345
8.3.1DMA_DeInit346
8.3.2DMA_Init346
8.3.3DMA_GetCurrDataCounter348
8.3.4DMA_Cmd348
8.3.5DMA_GetFlagStatus349
8.3.6DMA_ClearFlag350
8.3.7DMA_ITConfig351
8.3.8DMA_GetITStatus351
8.3.9DMA_ClearITPendingBit353
8.4STM32F103的DMA開發(fā)實(shí)例——存儲(chǔ)器間的數(shù)據(jù)傳輸353
8.4.1功能要求353
8.4.2硬件設(shè)計(jì)353
8.4.3軟件流程設(shè)計(jì)354
8.4.4軟件代碼實(shí)現(xiàn)355
8.4.5軟件代碼分析——const358
8.4.6下載硬件調(diào)試358
8.4.7開發(fā)經(jīng)驗(yàn)小結(jié)——使用DMA365
8.5本章小結(jié)366
習(xí)題8366
第9章ADC367
9.1ADC概述367
9.1.1ADC的由來367
9.1.2ADC的基本原理368
9.1.3ADC的性能參數(shù)370
9.1.4ADC的主要類型371
9.2STM32F103的ADC工作原理372
9.2.1主要特性373
9.2.2內(nèi)部結(jié)構(gòu)373
9.2.3ADC通道及分組375
9.2.4ADC觸發(fā)轉(zhuǎn)換376
9.2.5ADC時(shí)鐘和轉(zhuǎn)換時(shí)間377
9.2.6ADC工作過程378
9.2.7ADC中斷和DMA請(qǐng)求378
9.2.8獨(dú)立模式和雙ADC模式380
9.2.9單次和連續(xù)轉(zhuǎn)換模式380
9.2.10掃描模式381
9.2.11間斷模式383
9.2.12校準(zhǔn)384
9.3STM32F10x的ADC相關(guān)庫函數(shù)384
9.3.1ADC_DeInit386
9.3.2ADC_Init386
9.3.3ADC_RegularChannelConfig388
9.3.4ADC_InjectedChannelConfig390
9.3.5ADC_InjectedSequencerLengthConfig390
9.3.6ADC_SetInjectedOffset391
9.3.7ADC_TampSensorVrefintCmd391
9.3.8ADC_Cmd392
9.3.9ADC_ResetCalibration392
9.3.10ADC_GetResetCalibrationStatus392
9.3.11ADC_StartCalibration393
9.3.12ADC_GetCalibrationStatus393
9.3.13ADC_SoftwareStartConvCmd394
9.3.14ADC_ExternalTrigConvCmd394
9.3.15ADC_SoftwareStartInjectedConvCmd395
9.3.16ADC_ExternalTrigInjectedConvCmd395
9.3.17ADC_ExternalTrigInjectedConvConfig396
9.3.18ADC_AutoInjectedConvCmd397
9.3.19ADC_DiscModeCmd397
9.3.20ADC_DiscModeChannelCountConfig398
9.3.21ADC_InjectedDiscModeCmd398
9.3.22ADC_GetConversionValue398
9.3.23ADC_GetInjectedConversionValue399
9.3.24ADC_GetFlagStatus399
9.3.25ADC_ClearFlag400
9.3.26ADC_ITConfig400
9.3.27ADC_GetITStatus401
9.3.28ADC_ClearITPendingBit401
9.3.29ADC_DMACmd402
9.4STM32F103的ADC開發(fā)實(shí)例——讀取GPIO引腳電壓402
9.4.1功能要求402
9.4.2硬件設(shè)計(jì)402
9.4.3軟件流程設(shè)計(jì)403
9.4.4軟件代碼實(shí)現(xiàn)406
9.4.5軟件模擬仿真409
9.4.6下載到硬件調(diào)試413
9.4.7開發(fā)經(jīng)驗(yàn)小結(jié)——使用軟件濾波降低噪聲414
9.5STM32F103的ADC開發(fā)實(shí)例——讀取芯片溫度414
9.5.1功能要求414
9.5.2硬件設(shè)計(jì)414
9.5.3軟件流程設(shè)計(jì)415
9.5.4軟件代碼實(shí)現(xiàn)418
9.5.5下載到硬件調(diào)試421
9.5.6開發(fā)經(jīng)驗(yàn)小結(jié)——輪詢、中斷和DMA422
9.6本章小結(jié)423
習(xí)題9423
第10章UART425
10.1數(shù)據(jù)通信的基本概念426
10.1.1并行和串行426
10.1.2單工、半雙工和全雙工426
10.1.3同步和異步426
10.2UART通信原理427
10.2.1UART的物理層427
10.2.2UART的協(xié)議層430
10.3STM32F103的USART工作原理432
10.3.1主要特性432
10.3.2內(nèi)部結(jié)構(gòu)432
10.3.3USART中斷435
10.3.4使用DMA進(jìn)行USART通信436
10.4STM32F10x的USART相關(guān)庫函數(shù)437
10.4.1USART_DeInit438
10.4.2USART_Init438
10.4.3USART_Cmd439
10.4.4USART_SendData440
10.4.5USART_ReceiveData440
10.4.6USART_GetFlagStatus441
10.4.7USART_ClearFlag441