嵌入式系統原理及應用——基於ARM Cortex-M3內核的STM32F103系列微控制
王益涵、孫憲坤、史誌才
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$576 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
目錄大綱
目錄Contents
第1篇系統篇
第1章嵌入式系統概述3
1.1嵌入式系統的定義和特點3
1.1.1嵌入式系統的定義3
1.1.2嵌入式系統和通用電腦比較4
1.1.3嵌入式系統的特點5
1.2嵌入式系統的硬件6
1.2.1嵌入式處理器7
1.2.2嵌入式存儲器15
1.2.3嵌入式I/O設備18
1.2.4嵌入式I/O接口18
1.3嵌入式系統的軟件21
1.3.1無操作系統的嵌入式軟件22
1.3.2帶操作系統的嵌入式軟件24
1.4嵌入式系統的分類27
1.4.1按硬件(嵌入式處理器)劃分27
1.4.2按軟件復雜度劃分27
1.4.3按實時性劃分28
1.4.4按使用對象劃分28
1.5嵌入式系統的應用28
1.5.1國防軍事28
1.5.2工業控制29
1.5.3消費電子30
1.5.4辦公自動化產品30
1.5.5網絡和通信設備30
1.5.6汽車電子31◆嵌入式系統原理及應用目錄1.5.7金融商業31
1.5.8生物醫學32
1.5.9信息家電32
1.6本章小結34
習題134
第2章嵌入式系統開發35
2.1嵌入式系統的開發環境、開發工具和調試方式35
2.1.1嵌入式系統的開發環境35
2.1.2嵌入式系統的開發工具37
2.1.3嵌入式系統的調試方式43
2.2嵌入式系統的開發語言50
2.2.1嵌入式硬件開發語言50
2.2.2嵌入式軟件開發語言51
2.3嵌入式系統的開發過程53
2.3.1需求分析54
2.3.2系統設計55
2.3.3系統實現61
2.3.4系統測試70
2.3.5系統發布73
2.4嵌入式開發工程師之路74
2.4.1嵌入式行業和人才的現狀分析74
2.4.2嵌入式開發工程師的能力要求74
2.4.3嵌入式開發工程師的進階之路75
2.5本章小結77
習題278
第2篇內核篇
第3章ARM CortexM3處理器81
3.1ARM CortexM3組成結構81
3.1.1CortexM3內核82
3.1.2調試系統84
3.2ARM CortexM3總線接口86
3.2.1CortexM3總線接口類型87
3.2.2CortexM3總線連接方案88
3.3ARM CortexM3編程模型89
3.3.1工作狀態89
3.3.2數據類型89
3.3.3寄存器89
3.3.4指令系統93
3.3.5操作模式和特權分級96
3.3.6異常和中斷98
3.3.7雙堆棧機制105
3.4ARM CortexM3存儲器系統107
3.4.1存儲器映射107
3.4.2位帶操作110
3.4.3存儲格式112
3.5ARM CortexM3的低功耗模式113
3.6本章小結114
習題3115
第4章基於ARM CortexM3的STM32微控制器117
4.1從CortexM3到基於CortexM3的MCU117
4.2基於CortexM3的STM32系列微控制器概述118
4.2.1產品線118
4.2.2命名規則124
4.2.3生態系統125
4.2.4開發方法131
4.2.5學習之路134
4.3STM32F103微控制器基礎136
4.3.1概述136
4.3.2主系統結構137
4.3.3功能模塊139
4.3.4引腳定義140
4.3.5存儲器組織141
4.4STM32F103微控制器的最小系統145
4.4.1電源電路145
4.4.2時鐘電路148
4.4.3復位電路149
4.4.4調試和下載電路150
4.4.5其他151
4.5STM32F103微控制器的時鐘系統153
4.5.1輸入時鐘153
4.5.2系統時鐘155
4.5.3由系統時鐘分頻得到的其他時鐘155
4.5.4STM32F10x時鐘系統相關庫函數157
4.6STM32F103微控制器的低功耗模式162
4.6.1睡眠模式163
4.6.2停機模式163
4.6.3待機模式164
4.7STM32F103微控制器的安全特性165
4.7.1看門狗165
4.7.2電源檢測166
4.7.3時鐘安全系統166
4.8STM32F103微控制器的啟動過程167
4.8.1啟動過程和啟動代碼概述167
4.8.2ARM啟動代碼所需匯編語言基礎167
4.8.3STM32F103的啟動代碼分析171
4.8.4STM32F103的啟動過程分析182
4.9建立第一個STM32F103應用工程185
4.9.1STM32F10x標準外設庫的下載和認知185
4.9.2嵌入式開發工具的下載和安裝198
4.9.3配置STM32F103工程198
4.9.4編寫用戶程序源代碼206
4.9.5編譯和鏈接STM32F103工程207
4.9.6調試STM32F103工程208
4.9.7將可執行程序下載到STM32F103運行215
4.10本章小結217
習題4217
第3篇片內外設篇
第5章GPIO221
5.1GPIO概述221
5.2STM32F103的GPIO工作原理221
5.2.1內部結構222
5.2.2工作模式224
5.2.3輸出速度224
5.2.4復用功能重映射225
5.2.5外部中斷映射和事件輸出228
5.2.6主要特性228
5.3STM32F10x的GPIO相關庫函數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開發實例——LED閃爍235
5.4.1功能要求235
5.4.2硬件設計235
5.4.3軟件流程設計236
5.4.4軟件代碼實現236
5.4.5軟件模擬模擬238
5.4.6下載到硬件運行241
5.4.7開發經驗小結——STM32微控制器開發的一般步驟241
5.5STM32F103的GPIO開發實例——按鍵控制LED亮滅241
5.5.1功能要求241
5.5.2硬件設計241
5.5.3軟件流程設計242
5.5.4軟件代碼實現243
5.5.5軟件模擬模擬244
5.5.6下載到硬件運行246
5.5.7開發經驗小結——使用庫函數開發STM32F103的GPIO246
5.6本章小結247
習題5248
第6章定時器249
6.1定時器概述249
6.1.1延時的實現249
6.1.2可編程定時/計數器功能概述251
6.2STM32F103的定時器概述252
6.3STM32F103的基本定時器TIM6和TIM7252
6.3.1內部結構253
6.3.2時鐘源253
6.3.3計數模式254
6.3.4主要特性254
6.4STM32F103的通用定時器TIM2—TIM5254
6.4.1內部結構254
6.4.2時鐘源256
6.4.3計數模式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的高級定時器TIM1和TIM8264
6.5.1內部結構264
6.5.2時鐘源264
6.5.3功能描述266
6.5.4主要特性266
6.6STM32F10x定時器相關庫函數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定時器開發實例——精確定時的LED閃爍277
6.7.1功能要求277
6.7.2硬件設計277
6.7.3軟件流程設計278
6.7.4軟件代碼實現279
6.7.5軟件模擬模擬281
6.7.6下載到硬件運行283
6.7.7開發經驗小結——使用printf在調試窗口輸出284
6.8STM32F103定時器開發實例——PWM輸出285
6.8.1功能要求285
6.8.2硬件設計286
6.8.3軟件流程設計286
6.8.4軟件代碼實現288
6.8.5軟件模擬模擬289
6.8.6下載到硬件運行291
6.8.7開發經驗小結——基於無限循環的嵌入式軟件架構291
6.9本章小結292
習題6292
第7章中斷293
7.1中斷的基本概念293
7.1.1中斷源294
7.1.2中斷屏蔽294
7.1.3中斷處理過程294
7.1.4中斷優先級296
7.1.5中斷嵌套297
7.1.6中斷的利與弊298
7.2STM32F103中斷系統298
7.2.1嵌套向量中斷控制器NVIC298
7.2.2STM32F103中斷優先級299
7.2.3STM32F103中斷向量表300
7.2.4STM32F103中斷服務函數303
7.2.5STM32F103中斷設置過程304
7.3STM32F103外部中斷/事件控制器EXTI306
7.3.1內部結構307
7.3.2工作原理308
7.3.3主要特性309
7.4STM32F10x的NVIC相關庫函數309
7.4.1NVIC_PriorityGroupConfig310
7.4.2NVIC_Init310
7.4.3NVIC_DeInit313
7.5STM32F10x的EXTI相關庫函數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的中斷開發實例——按鍵控制LED亮滅318
7.6.1功能要求318
7.6.2硬件設計318
7.6.3軟件流程設計319
7.6.4軟件代碼實現320
7.6.5下載到硬件運行323
7.6.6開發經驗小結——前/後臺嵌入式軟件架構323
7.7STM32F103的中斷開發實例——精確延時的LED閃爍325
7.7.1功能要求325
7.7.2硬件設計325
7.7.3軟件流程設計326
7.7.4軟件代碼實現328
7.7.5軟件代碼分析——volatile331
7.7.6軟件模擬模擬332
7.7.7下載到硬件運行334
7.7.8開發經驗小結——改進的前/後臺嵌入式軟件架構334
7.8本章小結336
習題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的特點與應用339
8.2STM32F103的DMA工作原理339
8.2.1功能框圖340
8.2.2觸發通道341
8.2.3優先級344
8.2.4傳輸模式344
8.2.5主要特性344
8.3STM32F10x的DMA相關庫函數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開發實例——存儲器間的數據傳輸353
8.4.1功能要求353
8.4.2硬件設計353
8.4.3軟件流程設計354
8.4.4軟件代碼實現355
8.4.5軟件代碼分析——const358
8.4.6下載硬件調試358
8.4.7開發經驗小結——使用DMA365
8.5本章小結366
習題8366
第9章ADC367
9.1ADC概述367
9.1.1ADC的由來367
9.1.2ADC的基本原理368
9.1.3ADC的性能參數370
9.1.4ADC的主要類型371
9.2STM32F103的ADC工作原理372
9.2.1主要特性373
9.2.2內部結構373
9.2.3ADC通道及分組375
9.2.4ADC觸發轉換376
9.2.5ADC時鐘和轉換時間377
9.2.6ADC工作過程378
9.2.7ADC中斷和DMA請求378
9.2.8獨立模式和雙ADC模式380
9.2.9單次和連續轉換模式380
9.2.10掃描模式381
9.2.11間斷模式383
9.2.12校準384
9.3STM32F10x的ADC相關庫函數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開發實例——讀取GPIO引腳電壓402
9.4.1功能要求402
9.4.2硬件設計402
9.4.3軟件流程設計403
9.4.4軟件代碼實現406
9.4.5軟件模擬模擬409
9.4.6下載到硬件調試413
9.4.7開發經驗小結——使用軟件濾波降低噪聲414
9.5STM32F103的ADC開發實例——讀取芯片溫度414
9.5.1功能要求414
9.5.2硬件設計414
9.5.3軟件流程設計415
9.5.4軟件代碼實現418
9.5.5下載到硬件調試421
9.5.6開發經驗小結——輪詢、中斷和DMA422
9.6本章小結423
習題9423
第10章UART425
10.1數據通信的基本概念426
10.1.1並行和串行426
10.1.2單工、半雙工和全雙工426
10.1.3同步和異步426
10.2UART通信原理427
10.2.1UART的物理層427
10.2.2UART的協議層430
10.3STM32F103的USART工作原理432
10.3.1主要特性432
10.3.2內部結構432
10.3.3USART中斷435
10.3.4使用DMA進行USART通信436
10.4STM32F10x的USART相關庫函數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
10.4.8USART_ITConfig442
10.4.9USART_GetITStatus443
10.4.10USART_ClearITPendingBit444
10.4.11USART_DMACmd444
10.5STM32F103的USART開發實例——重定向printf445
10.5.1功能要求445
10.5.2硬件設計445
10.5.3軟件流程設計446
10.5.4軟件代碼實現447
10.5.5下載到硬件運行449
10.5.6開發經驗小結——使用printf重定向到USART1451
10.6STM32F103的USART開發實例——PC串口通信452
10.6.1功能要求452
10.6.2硬件設計452
10.6.3軟件流程設計452
10.6.4軟件代碼實現452
10.6.5下載到硬件運行454
10.6.6開發經驗小結——庫函數開發STM32F103外設的一般原理455
10.7本章小結459
習題10459
第11章SPI461
11.1SPI通信原理461
11.1.1SPI的物理層462
11.1.2SPI的協議層464
11.2STM32F103的SPI工作原理469
11.2.1主要特性469
11.2.2內部結構470
11.2.3SPI主模式471
11.2.4SPI從模式472
11.2.5SPI狀態標誌和中斷473
11.2.6SPI發送數據和接收數據474
11.2.7使用DMA進行SPI通信475
11.3STM32F10x的SPI相關庫函數476
11.3.1SPI_I2S_DeInit477
11.3.2SPI_Init477
11.3.3SPI_Cmd479
11.3.4SPI_I2S_SendData479
11.3.5SPI_I2S_ReceiveData480
11.3.6SPI_I2S_GetFlagStatus480
11.3.7SPI_I2S_ClearFlag481
11.3.8SPI_I2S_ITConfig481
11.3.9SPI_I2S_GetITStatus482
11.3.10SPI_I2S_ClearITPendingBit483
11.3.11SPI_I2S_DMACmd483
11.4STM32F103的SPI開發實例——讀寫SPI_FLASH484
11.4.1功能要求484
11.4.2硬件設計484
11.4.3軟件架構設計485
11.4.4軟件模塊分析486
11.4.5軟件代碼實現507
11.4.6下載硬件調試517
11.4.7下載到硬件運行522
11.4.8開發經驗小結——模塊化開發的嵌入式軟件設計523
11.5本章小結524
習題11524
第12章I2C526
12.1I2C通信原理526
12.1.1I2C的物理層527
12.1.2I2C的協議層529
12.2STM32F103的I2C工作原理533
12.2.1主要特性534
12.2.2內部結構534
12.2.3I2C從模式535
12.2.4I2C主模式537
12.2.5I2C中斷540
12.2.6使用DMA進行I2C通信540
12.3STM32F10x的I2C相關庫函數542
12.3.1I2C_DeInit543
12.3.2I2C_Init543
12.3.3I2C_Cmd545
12.3.4I2C_GenerateSTART545
12.3.5I2C_ReadRegister545
12.3.6I2C_Send7bitAddress546
12.3.7I2C_SendData546
12.3.8I2C_ReceiveData547
12.3.9I2C_CheckEvent547
12.3.10I2C_AcknowledgeConfig548
12.3.11I2C_GenerateSTOP548
12.3.12I2C_GetFlagStatus549
12.3.13I2C_ClearFlag550
12.3.14I2C_ITConfig551
12.3.15I2C_GetITStatus551
12.3.16I2C_ClearITPendingBit552
12.3.17I2C_DMACmd552
12.4STM32F103的I2C開發實例——讀寫I2C_EEPROM553
12.4.1功能要求553
12.4.2硬件設計553
12.4.3軟件架構設計554
12.4.4軟件模塊分析555
12.4.5軟件代碼實現566
12.4.6下載到硬件調試574
12.4.7下載到硬件運行577
12.4.8開發經驗小結——嵌入式驅動程序開發原理578
12.5本章小結579
習題12580
附錄AASCII碼表581
附錄BSTM32F103微控制器大容量產品系列引腳定義表583
附錄CSTM32F103微控制器中等容量產品系列引腳定義表589
附錄DSTM32F103微控制器小容量產品系列引腳定義表594



