21天學通ARM嵌入式開發(第2版)

21天學通ARM嵌入式開發(第2版)

《21天學通ARM嵌入式開發(第2版)》是2011年出版的圖書,作者是薛園園。該書系統地介紹了ARM嵌入式系統的基本結構、開發和ARM處理器的編程,並結合流行的嵌入式系統介紹了如何移植。

內容簡介

本書言簡意賅、通俗易懂,知識點覆蓋全面,詳細講述了最新的ARM Cortex-M3核心及STM32處理器編程,使讀者能夠更好地掌握ARM處理器及相應的嵌入式系統設計。

本書分為四篇,共23章,全面詳細地講述了ARM處理器的原理、程式設計方法、ARM處理器編程指南及嵌入式系統移植。首先介紹了ARM處理器的構架及如何搭建一個ARM嵌入式開發平台,接著介紹了ARM Cortex-M3的指令集,基於Cortex-M3的STM32系列晶片及一些典型的嵌入式作業系統。然後結合STM32的各個功能部件詳細講解了ARM處理器的硬體編程方法。最後本書還介紹了基於ARM Cortex-M3的STM32晶片如何移植流行的嵌入式作業系統。

本書知識點覆蓋全面、結構安排緊湊、講解詳細、實例豐富。ARM嵌入式系統的初學者通過本書可以快速掌握程式設計方法。本書對具有一定開發經驗的設計人員,也有很高的參考價值。

本書附贈DVD光碟1張,內容包括超大容量手把手教學視頻、電子教案(PPT)。

前 言

為什麼要寫這樣一本書

嵌入式系統是目前最為流行的技術。在嵌入式系統中,ARM處理器的套用無處不在。熟練掌握ARM處理器及嵌入式作業系統設計,已經成為設計人員的法寶。目前市面上關於ARM嵌入式開發的書籍非常豐富,但是這些書有些過於技術化,入門者根本無法入手,也有部分書籍內容不全,無法讓初學者對該技術得到全面的認識。另外,這些書籍內容過於陳舊,無法跟蹤最新的進展。

為了能讓初次接觸ARM嵌入式系統開發的愛好者快速而又輕鬆地學會ARM處理器及其程式開發,筆者總結了自己學習ARM的經驗,並結合多年實際開發的經驗,編寫了這本ARM嵌入式開發的基礎教程。在本書中,筆者從最基礎的概念入手,循序漸進地將ARM處理器開發和程式設計中的每個技術點展現在讀者面前,力求讓讀者在最短的時間內高效地掌握ARM處理器及嵌入式開發的基礎概念及技術要點。本書採用了最新的ARM Cortex-M3核心進行講解。最新的ARM Cortex-M3核心提供了更為強大的功能,目前正在取代老款的ARM7等核心。

本書有何特色

1.細緻體貼的講解

為了讓讀者更快地上手,本書特別設計了適合初學者的學習方式,用準確的語言總結概念用直觀的圖示演示過程用詳細的注釋解釋代碼用形象的比方幫助記憶。效果如下:

知識點介紹 準確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。

範例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。

範例代碼 與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號,便於學習。

運行結果 對範例給出運行結果和對應圖示,幫助讀者更直觀地理解範例代碼。

代碼解析 將範例代碼中的關鍵代碼行逐一解釋,有助於讀者掌握相關概念和知識。

習題 每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握。

貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下:

 提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。

 注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。

 警告:對操作不當或理解偏差將會造成的災難性後果做警示,以加深讀者印象。

經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式,會非常輕鬆、順利地掌握本書知識。

2.實用超值的DVD光碟

為了幫助讀者比較直觀地學習,本書附贈DVD光碟,內容包括多媒體視頻、電子教案(PPT)等。

 多媒體視頻

配有長達15小時手把手教學視頻,講解關鍵知識點界面操作。作者親自配音、演示,手把手教會讀者使用。

 電子教案(PPT)

本書可以作為高校相關課程的教材或課外輔導書,所以筆者特別為本書製作了電子教案(PPT),以方便老師教學使用。

3.提供完善的技術支持

本書提供了論壇,讀者可以在上面提問交流。另外,論壇上還有一些小的教程、視頻動畫和各種技術文章,可幫助讀者提高開發水平。

推薦的學習計畫

目 錄

第一篇 走進嵌入式系統開發

第1章 嵌入式系統開發概述

( 教學視頻:44分鐘) 25

1.1 何為嵌入式系統 25

1.1.1 嵌入式系統的概念 25

1.1.2 嵌入式系統的基本結構 26

1.1.3 嵌入式處理器 26

1.2 嵌入式系統的特點及發展趨勢 27

1.3 嵌入式系統的開發過程 28

1.3.1 晶片選擇 28

1.3.2 配置硬體平台 28

1.3.3 BootLoader移植 28

1.3.4 作業系統裁減 29

1.3.5 系統移植 29

1.3.6 應用程式開發 29

1.4 如何成為嵌入式開發人員 29

1.5 小結 30

1.6 習題 30

第2章 嵌入式作業系統簡介

( 教學視頻:37分鐘) 31

2.1 嵌入式作業系統概述 31

2.1.1 嵌入式作業系統的發展歷史 31

2.1.2 嵌入式作業系統的分類 31

2.1.3 嵌入式作業系統的特點 32

2.2 主流嵌入式作業系統簡介 32

2.2.1 VxWorks 32

2.2.2 pSOS 33

2.2.3 Palm OS 33

2.2.4 QNX 34

2.2.5 OS-9 34

2.2.6 LynxOS 34

2.2.7 Windows CE 34

2.2.8 μC/OS-II 35

2.2.9 嵌入式Linux 36

2.2.10 FreeRTOS 36

2.3 小結 36

2.4 習題 36

第3章 ARM處理器構架

( 教學視頻:53分鐘) 38

3.1 ARM體系結構概述 38

3.1.1 ARM簡介 38

3.1.2 CISC的體系結構 39

3.1.3 RISC的體系結構 39

3.1.4 ARM微處理器的套用領域 39

3.1.5 ARM體系結構的特點 40

3.2 ARM處理器系列 40

3.2.1 ARM7微處理器 40

3.2.2 ARM9微處理器 41

3.2.3 ARM9E微處理器 41

3.2.4 ARM10E微處理器 42

3.2.5 ARM11微處理器 42

3.2.6 SecurCore微處理器 42

3.2.7 StrongARM微處理器 42

3.2.8 Xscale微處理器 43

3.2.9 Cortex-M3微處理器 43

3.2.10 基於ARM核的晶片選擇 43

3.3 ARM處理器結構 44

3.3.1 ARM的系統構架 44

3.3.2 ARM的流水線結構 44

3.3.3 ARM的存儲器結構 45

3.4 ARM編程模型 45

3.4.1 工作模式和工作狀態 46

3.4.2 特權訪問和用戶訪問 46

3.4.3 數據類型 46

3.4.4 存儲器格式 46

3.5 ARM開發調試工具綜述 47

3.6 小結 47

3.7 習題 47

第4章 搭建嵌入式開發平台

( 教學視頻:39分鐘) 49

4.1 基於ARM的RealView MDK開發

環境 49

4.1.1 RealView MDK簡介 49

4.1.2 RealView MDK系統安裝需求 49

4.1.3 RealView MDK的安裝 50

4.1.4 RealView MDK集成開發

環境總覽 51

4.1.5 RealView MDK的選單欄 51

4.1.6 RealView MDK的工具列 55

4.1.7 RealView MDK的快捷鍵 58

4.2 基於ARM Cortex-M3的STM32選型表 58

4.3 基於ARM Cortex-M3的STM32

最小開發系統 59

4.4 程式下載方式 60

4.5 小結 61

4.6 習題 61

第二篇 ARM嵌入式系統開發基礎

第5章 ARM CORTEX-M3指令集

( 教學視頻:30分鐘) 62

5.1 數據傳送指令 62

5.1.1 暫存器間數據傳送指令 62

5.1.2 存儲器數據傳送指令 62

5.1.3 索引數據傳送指令 63

5.2 數據處理指令 64

5.2.1 算術四則運算指令 64

5.2.2 邏輯及移位操作指令 65

5.2.3 數據序轉及位操作指令 66

5.3 子程式呼叫及轉移指令 66

5.4 隔離指令 67

5.5 不支持的指令 67

5.6 小結 68

5.7 習題 68

第6章 基於ARM CORTEX-M3的

STM32在套用編程

( 教學視頻:31分鐘) 70

6.1 在套用編程簡介 70

6.2 STM32的啟動配置 70

6.3 STM32的在套用編程 71

6.3.1 電路原理圖 71

6.3.2 BootLoader固件下載步驟 72

6.4 小結 74

6.5 習題 75

第7章 嵌入式實時作業系統FREERTOS

( 教學視頻:42分鐘) 76

7.1 嵌入式實時作業系統FreeRTOS簡介 76

7.2 嵌入式作業系統基本概念 76

7.2.1 多任務 77

7.2.2 調度 77

7.2.3 上下文切換 78

7.2.4 實時套用和調度 78

7.3 FreeRTOS的API模組 78

7.3.1 定製 78

7.3.2 任務創建和刪除 80

7.3.3 任務控制 81

7.3.4 核心控制 82

7.4 小結 83

7.5 習題 83

第8章 嵌入式系統UC/OS-Ⅱ

( 教學視頻:39分鐘) 85

8.1 UC/OS-Ⅱ嵌入式系統簡介 85

8.2 UC/OS-Ⅱ任務管理 85

8.2.1 建立任務OSTaskCreate 86

8.2.2 建立任務OSTaskCreate Ext 86

8.2.3 任務堆疊 88

8.2.4 堆疊檢驗OSTaskStkChk 88

8.2.5 刪除任務OSTaskDel 89

8.2.6 請求刪除任務OSTaskDelReq 90

8.2.7 改變任務的優先權OSTask

ChangePrio 91

8.2.8 掛起任務OSTaskSuspend 92

8.2.9 恢復任務OSTaskResume 93

8.2.10 獲得有關任務的信息OSTaskQuery 94

8.3 任務之間的通信與同步 95

8.3.1 信號量 95

8.3.2 信箱 95

8.3.3 訊息佇列 95

8.4 小結 96

8.5 習題 96

第三篇 深入ARM嵌入式控制器

第9章 通用I/O接口

( 教學視頻:48分鐘) 98

9.1 通用I/O接口的結構 98

9.1.1 GPIO的基本結構 98

9.1.2 GPIO的功能 99

9.1.3 GPIO的功能配置 100

9.1.4 復用功能與重映射 101

9.2 通用I/O接口的編程方法 104

9.2.1 GPIO暫存器結構 105

9.2.2 GPIO暫存器復位函式

GPIO_DeInit 105

9.2.3 復用功能暫存器復位函式

GPIO_AFIODeInit 106

9.2.4 參數初始化函式GPIO_Init 106

9.2.5 復位GPIO_InitStruct函式

GPIO_StructInit 108

9.2.6 讀輸入引腳函式

GPIO_ReadInputDataBit 108

9.2.7 讀輸入連線埠函式

GPIO_ReadInputData 108

9.2.8 讀輸出引腳函式

GPIO_ReadOutputDataBit 109

9.2.9 讀輸出連線埠函式

GPIO_ReadOutputData 109

9.2.10 置位引腳函式GPIO_SetBits 109

9.2.11 清除引腳位函式GPIO_ResetBits 109

9.2.12 置位或清除引腳函式

GPIO_WriteBit 110

9.2.13 寫連線埠函式GPIO_Write 110

9.2.14 引腳配置鎖定函式

GPIO_PinLockConfig 110

9.2.15 選擇事件輸出引腳函式

GPIO_EventOutputConfig 111

9.2.16 使能事件輸出函式

GPIO_EventOutputCmd 111

9.2.17 改變引腳映射函式

GPIO_PinRemapConfig 111

9.2.18 選擇EXTI線函式

GPIO_EXTILineConfig 112

9.3 綜合練習 113

9.4 小結 113

9.5 習題 114

第10章 FLASH

( 教學視頻:24分鐘) 115

10.1 Flash快閃記憶體的結構 115

10.2 Flash快閃記憶體的基本特性 116

10.2.1 Flash快閃記憶體讀取 116

10.2.2 Flash快閃記憶體編程和擦除 116

10.3 Flash的編程方法 116

10.3.1 Flash暫存器結構 117

10.3.2 設定代碼延時值函式

Flash_SetLatency 118

10.3.3 使能或禁用半周期訪問函式

Flash_HalfCycleAccessCmd 118

10.3.4 使能或禁用預取緩衝區函式

Flash_PrefetchBufferCmd 118

10.3.5 解鎖擦除控制器函式Flash_Unlock 118

10.3.6 鎖定擦除控制器函式Flash_Lock 119

10.3.7 擦除頁函式Flash_ErasePage 119

10.3.8 擦除全部頁函式

Flash_EraseAllPages 119

10.3.9 擦除選項位元組函式

Flash_EraseOptionBytes 120

10.3.10 字寫入函式Flash_ProgramWord 120

10.3.11 半字寫入函式

Flash_ProgramHalfWord 121

10.3.12 寫選項位元組函式Flash_

ProgramOptionByteData 121

10.3.13 頁防寫函式Flash_

EnableWriteProtection 122

10.3.14 使能或禁用讀保護函式

Flash_ReadOutProtection 123

10.3.15 寫選項位元組函式Flash_

UserOptionByteConfig 124

10.3.16 獲取選項位元組函式Flash_

GetUserOptionByte 125

10.3.17 獲取防寫選項位元組函式Flash_

GetWriteProtectionOptionByte 125

10.3.18 獲取讀保護狀態函式Flash_Get

ReadOutProtectionStatus 125

10.3.19 獲取預取緩衝區狀態函式

Flash_GetPrefectchBufferStatus 125

10.3.20 使能或禁用中斷函式

Flash_ITConfig 126

10.3.21 獲取標誌位狀態函式

Flash_GetFlagStatus 126

10.3.22 清除掛起標誌函式

Flash_ClearFlag 127

10.3.23 獲取Flash狀態函式

Flash_GetStatus 127

10.3.24 等待操作結束函式Flash_

WaitForLastOperation 127

10.4 綜合練習 128

10.5 小結 130

10.6 習題 130

第11章 ADC系統

( 教學視頻:52分鐘) 132

11.1 ADC系統概述 132

11.2 ADC系統功能特性 133

11.2.1 ADC開關控制 133

11.2.2 ADC時鐘 133

11.2.3 ADC通道選擇 133

11.2.4 ADC的轉換模式 133

11.2.5 中斷 134

11.2.6 模擬看門狗 134

11.2.7 ADC的掃描模式 134

11.2.8 ADC的注入通道管理 134

11.2.9 間斷模式 135

11.2.10 ADC的校準模式 135

11.2.11 ADC的數據對齊 136

11.2.12 可程式的通道採樣時間 136

11.2.13 外部觸發轉換 136

11.2.14 DMA請求 137

11.2.15 雙ADC模式 137

11.2.16 溫度感測器 138

11.3 ADC系統的編程方法 139

11.3.1 ADC暫存器結構 140

11.3.2 ADC暫存器復位函式ADC_

DeInit 141

11.3.3 參數初始化函式ADC_Init 141

11.3.4 復位ADC_InitStruct函式

ADC_StructInit 143

11.3.5 使能或禁用ADC模組函式

ADC_Cmd 143

11.3.6 使能或禁用DMA請求函式

ADC_DMACmd 143

11.3.7 使能或禁用ADC中斷函式

ADC_ITConfig 144

11.3.8 復位ADC校準暫存器函式

ADC_ResetCalibration 144

11.3.9 獲取復位校準暫存器狀態函式ADC_ GetResetCalibrationStatus 144

11.3.10 開始ADC校準函式

ADC_StartCalibration 145

11.3.11 獲取ADC校準狀態

ADC_GetCalibrationStatus 145

11.3.12 使能或禁用軟體轉換函式ADC_

SoftwareStartConvCmd 145

11.3.13 獲取軟體開始轉換狀態函式ADC_

GetSoftwareStartConvStatus 146

11.3.14 配置常規組非連續模式函式ADC_

DiscModeChannelCountConfig 146

11.3.15 使能或禁用常規組非連續模式

函式ADC_DiscModeCmd 146

11.3.16 配置ADC常規信道函式ADC_

RegularChannelConfig 147

11.3.17 使能或禁用外部觸發函式

ADC_ExternalTrigConvCmd 148

11.3.18 獲取轉換結果函式ADC_

GetConversionValue 148

11.3.19 獲取雙重轉換結果函式ADC_ GetDualModeConversionValue 148

11.3.20 使能或禁用自動注入組轉換函式ADC_AutoInjectedConvCmd 149

11.3.21 使能或禁用非連續模式函式

ADC_InjectedDiscModeCmd 149

11.3.22 配置外部觸發器函式ADC_

ExternalTrigInjectedConvConfig 149

11.3.23 使能或禁用注入信道轉換

函式 ADC_ExternalTrig

InjectedConvCmd 150

11.3.24 使能或禁用開始注入信道

轉換函式 ADC_Software

StartInjectedConvCmd 150

11.3.25 獲取啟動轉換注入狀態

函式 ADC_GetSoftware

StartInjectedConvStatus 151

11.3.26 配置ADC注入信道函式

ADC_InjectedChannelConfig 151

11.3.27 配置注入信道音序器長度

函式ADC_Injected

SequencerLengthConfig 152

11.3.28 設定注入信道轉換值位移函式

ADC_SetInjectedOffset 152

11.3.29 獲取注入信道轉換結果

函式ADC_GetInjected

ConversionValue 153

11.3.30 使能或禁用模擬看門狗函式

ADC_AnalogWatchdogCmd 153

11.3.31 配置模擬看門狗域值函式 ADC_AnalogWatchdog

ThresholdsConfig 154

11.3.32 配置模擬看門狗保護函式 ADC_AnalogWatchdog

SingleChannelConfig 154

11.3.33 使能或禁用溫度感測函式

ADC_TempSensorVrefintCmd 154

11.3.34 獲取ADC標誌函式

ADC_GetFlagStatus 155

11.3.35 清除掛起標誌函式

ADC_ClearFlag 155

11.3.36 獲取中斷函式ADC_GetITStatus 155

11.3.37 清除中斷掛起位函式

ADC_ClearITPendingBit 156

11.4 綜合練習 156

11.5 小結 157

11.6 習題 157

第12章 中斷系統

( 教學視頻:32分鐘) 159

12.1 嵌套向量中斷控制器(NVIC) 159

12.2 NVIC的編程方法 161

12.2.1 NVIC暫存器結構 162

12.2.2 復位NVIC外設函式

NVIC_DeInit 163

12.2.3 復位SCB外設函式NVIC_

SCBDeInit 163

12.2.4 配置優先權組函式NVIC_ PriorityGroupConfig 163

12.2.5 初始化NVIC外設函式

NVIC_Init 163

12.2.6 復位NVIC_InitStruct函式

NVIC_StructInit 164

12.2.7 使能PRIMASK優先權函式

NVIC_SETPRIMASK 165

12.2.8 用PRIASK優先權函式

NVIC_RESETPRIMASK 165

12.2.9 使能FAULTMASK優先權函式

NVIC_SETFA- ULTMASK 165

12.2.10 禁用FAULTMASK優先權函式

NVIC_RESET- FAULTMASK 165

12.2.11 配置執行優先權函式NVIC_

BASEPRICONFIG 165

12.2.12 獲取BASEPRI掩碼值函式

NVIC_GetBASEPRI 166

12.2.13 獲取掛起服務的IRQ通道

標識符函式NVIC_GetCurrent

PendingIRQChannel 166

12.2.14 獲取IRQ通道掛起位函式 NVIC_

GetIRQChannelPendingBitStatus 166

12.2.15 設定中斷掛起位函式NVIC_

GetIRQChannelPendingBit 166

12.2.16 清除中斷掛起位函式NVIC_

ClearIRQChannelPendingBit 167

12.2.17 返回活動句柄函式NVIC_

GetCurrentActiveHandle 167

12.2.18 獲取IRQ通道活動位函式 NVIC_

GetIRQChannelActiveBitStatus 167

12.2.19 獲取ID號函式

NVIC_GetCPUID 167

12.2.20 設定向量表和偏移量函式

NVIC_SetVectorTable 168

12.2.21 系統復位函式NVIC_

GenerateSystemReset 168

12.2.22 核復位函式

NVIC_GenerateCoreReset 168

12.2.23 低功耗模式條件函式

NVIC_SystemLPConfig 168

12.2.24 使能或禁用系統句柄函式

NVIC_SystemHandlerConfig 169

12.2.25 配置系統句柄優先權函式NVIC_

SystemHandlerPriorityConfig 169

12.2.26 獲取系統句柄掛起位函式

NVIC_GetSystemHandler

PendingBitStatus 170

12.2.27 設定系統句柄掛起位函式NVIC_ S

etSystemHandlerPendingBit 170

12.2.28 清除系統句柄掛起位函式NVIC_

ClearSystemHandlerPendingBit 171

12.2.29 獲取系統句柄活動位函式

NVIC_GetSystemHandler

ActiveBitStatus 171

12.2.30 獲取系統故障句柄源函式NVIC_

GetFaultHandlerSources 172

12.2.31 獲取故障句柄位置函式

NVIC_GetFaultAddress 172

12.3 外部中斷/事件控制器(EXTI) 173

12.3.1 EXTI主要特性 173

12.3.2 EXTI功能說明 173

12.4 EXTI的編程方法 174

12.4.1 EXTI暫存器結構 174

12.4.2 復位EXTI外設函式

EXTI_DeInit 175

12.4.3 初始化EXTI外設函式

EXTI_Init 175

12.4.4 復位EXTI_InitStruct函式

EXTI_StructInit 176

12.4.5 軟中斷函式

EXTI_GenerateSWInterrupt 176

12.4.6 獲取標誌狀態函式

EXTI_GetFlagStatus 176

12.4.7 清除掛起標誌函式

EXTI_ClearFlag 176

12.4.8 獲取EXTI置位函式

EXTI_GetITStatus 177

12.4.9 清除掛起位函式

EXTI_ClearITPendingBit 177

12.5 綜合練習 177

12.6 小結 181

12.7 習題 181

第13章 異步串列通信接口

( 教學視頻:59分鐘) 184

13.1 USART結構 184

13.1.1 USART特徵描述 184

13.1.2 USART傳送器 184

13.1.3 USART接收器 185

13.1.4 LIN模式 185

13.1.5 USART同步模式 186

13.1.6 USART單線半雙工通信 186

13.1.7 USART的智慧卡功能 186

13.1.8 USART的IrDA模式 186

13.1.9 USART的DMA通信 187

13.1.10 USART的硬體流控制 188

13.1.11 USART的中斷請求 188

13.2 USART編程方法 188

13.2.1 USART暫存器結構 189

13.2.2 USART暫存器復位函式

USART_DeInit 190

13.2.3 參數初始化函式

USART_Init 190

13.2.4 復位USART_InitStruct

函式USART_StrucInit 192

13.2.5 使能或禁用USART函式

USART_Cmd 192

13.2.6 使能或禁用中斷函式

USART_ITConfig 193

13.2.7 使能或禁用DMA函式

USART_DMACmd 193

13.2.8 設定節點地址函式

USART_SetAddress 194

13.2.9 選擇喚醒方式函式

USART_WakeUpConfig 194

13.2.10 USART模式函式USART_

ReceiverWakeUpCmd 194

13.2.11 LIN間隔檢波長度函式USART_

LINBreakDetectionConfig 195

13.2.12 使能或者禁用LIN模式

函式USART_LINCmd 195

13.2.13 傳送數據函式USART_

SendData 195

13.2.14 接收數據函式USART_

ReceiveData 196

13.2.15 傳輸間斷字元函式

USART_SendBreak 196

13.2.16 設定預警時間函式

USART_SetGuardTime 196

13.2.17 設定時鐘預分頻器函式

USART_SetPrescaler 196

13.2.18 使能或者禁用智慧卡模式函式

USART_SmartCardCmd 197

13.2.19 使能或禁用NACK函式

USART_SmartCardNackCmd 197

13.2.20 使能或者禁用半雙工模式函式

USART_HalfDuplexCmd 197

13.2.21 配置IrDA模式函式USART_ IrDAConfig 198

13.2.22 使能或者禁用IrDA模式

函式USART_IrDACmd 198

13.2.23 獲取標誌是否置位函式

USART_GetFlagStatus 198

13.2.24 清除未決標誌函式

USART_ClearFlag 199

13.2.25 獲取中斷狀態函式

USART_GetITStatus 199

13.2.26 清除中斷未決位函式USART_

ClearITPendingBit 200

13.3 CAN結構 200

13.3.1 初始化模式 201

13.3.2 正常模式 201

13.3.3 睡眠模式 201

13.3.4 測試模式 202

13.3.5 靜默模式 202

13.3.6 環回模式 202

13.3.7 環回靜默模式 202

13.4 CAN編程方法 202

13.4.1 CAN暫存器結構 203

13.4.2 CAN暫存器復位函式

CAN_DeInit 204

13.4.3 參數初始化函式CAN_Init 204

13.4.4 過濾參數初始化函式

CAN_FilterInit 207

13.4.5 復位CAN_InitStruct函式

CAN_StructInit 208

13.4.6 使能或禁用CAN中斷函式

CAN_ITConfig 209

13.4.7 初始化報文傳送函式

CAN_Transmit 209

13.4.8 檢查報文傳送函式

CAN_TransmitStatus 211

13.4.9 取消傳送函式CAN_

CancelTransmit 211

13.4.10 釋放FIFO函式CAN_

FIFORelease 212

13.4.11 獲取掛起報文數量函式

CAN_MessagePending 212

13.4.12 報文接收函式CAN_Receive 212

13.4.13 低功耗模式函式CAN_Sleep 213

13.4.14 喚醒CAN模組函式

CAN_WakeUp 214

13.4.15 獲取CAN標誌函式

CAN_GetFlagStatus 214

13.4.16 清除掛起標誌CAN_ClearFlag 214

13.4.17 獲取中斷狀態函式

CAN_GetITStatus 215

13.4.18 清除中斷掛起位函式

CAN_ClearITPendingBit 216

13.5 綜合練習 217

13.6 小結 218

13.7 習題 219

第14章 同步串列通信接口

( 教學視頻:52分鐘) 221

14.1 SPI結構 221

14.1.1 SPI從模式工作原理 222

14.1.2 SPI主模式工作原理 222

14.1.3 SPI通信的CRC 223

14.1.4 SPI的DMA通信 223

14.1.5 SPI的中斷請求 223

14.2 SPI編程方法 224

14.2.1 SPI暫存器結構 224

14.2.2 復位SPI外設暫存器函式

SPI_DeInit 225

14.2.3 初始化外設SPIx暫存器

函式SPI_Init 225

14.2.4 設定SPI_InitStruct結構

成員函式SPI_StructInit 226

14.2.5 使能或者禁用SPI外設

函式SPI_Cmd 226

14.2.6 使能或者禁用SPI中斷函式

SPI_ITConfig 226

14.2.7 使能或者禁用SPI的DMA

請求函式SPI_DMACmd 227

14.2.8 傳送數據函式SPI_SendData 227

14.2.9 接收數據函式SPI_Receive

Data 227

14.2.10 配置NSS引腳函式SPI_

NSSInternalSoftwareConfig 227

14.2.11 使能或者禁用SPI SS輸出

函式SPI_SSOutputCmd 228

14.2.12 設定SPI數據大小函式

SPI_DataSizeConfig 228

14.2.13 傳送CRC值函式

SPI_TransmitCRC 228

14.2.14 使能或者禁用CRC值計算

函式SPI_CalculateCRC 228

14.2.15 獲取CRC暫存器值函式

SPI_GetCRC 229

14.2.16 獲取CRC多項式暫存器值函式

SPI_GetCRCPolynomial 229

14.2.17 雙向模式下數據方向函式SPI_

BiDirectionalLineConfig 229

14.2.18 獲取SPI標誌位函式

SPI_GetFlagStatus 230

14.2.19 清除掛起標誌位函式

SPI_ClearFlag 230

14.2.20 獲取SPI中斷函式

SPI_GetITStatus 230

14.2.21 清除中斷掛起位函式

SPI_ClearITPendingBit 231

14.3 I2C結構 231

14.3.1 I2C從模式工作原理 232

14.3.2 I2C主模式工作原理 233

14.3.3 SMBus功能 233

14.3.4 I2C的DMA功能 233

14.3.5 I2C的中斷請求 234

14.4 I2C編程方法 235

14.4.1 I2C暫存器結構 236

14.4.2 復位I2C外設暫存器函式

I2C_DeInit 236

14.4.3 初始化I2C外設函式I2C_Init 237

14.4.4 復位I2C_InitStruct結構

函式I2C_StructInit 238

14.4.5 使能或者禁用I2C外設

函式I2C_Cmd 238

14.4.6 使能或者禁用DMA請求

函式I2C_DMACmd 238

14.4.7 標示最後DMA傳輸函式

I2C_DMALastTransferCmd 239

14.4.8 產生起始信號函式

I2C_GenerateSTART 239

14.4.9 產生停止信號函式

I2C_GenerateSTOP 239

14.4.10 使能或者禁用應答函式

I2C_AcknowledgeConfig 240

14.4.11 配置I2C首地址2函式

I2C_OwnAddress2Config 240

14.4.12 使能或者禁用雙重地址模式

函式I2C_DualAddressCmd 240

14.4.13 使能或者禁用通用調用特性

函式I2C_GeneralCallCmd 241

14.4.14 使能或者禁用I2C中斷

函式I2C_ITConfig 241

14.4.15 傳送數據函式I2C_SendData 241

14.4.16 接收數據函式

I2C_ReceiveData 242

14.4.17 傳送地址位元組函式

I2C_Send7bitAddress 242

14.4.18 讀取I2C暫存器函式

I2C_ReadRegister 242

14.4.19 使能或禁用軟體復位函式

I2C_SoftwareResetCmd 242

14.4.20 配置驅動SMBAlert引腳函式

I2C_SMBusAlertConfig 243

14.4.21 使能或者禁用PEC傳輸

函式I2C_TransmitPEC 243

14.4.22 選擇PEC位置函式

I2C_PECPositionConfig 243

14.4.23 使能或禁用PEC計算值

函式I2C_CalculatePEC 244

14.4.24 獲取PEC值函式

I2C_GetPEC 244

14.4.25 使能或者禁用I2C ARP

函式I2C_ARPCmd 244

14.4.26 使能或禁用I2C時鐘伸展函式

I2C_StretchClockCmd 245

14.4.27 配置占空比函式I2C_FastMode

DutyCycleConfig 245

14.4.28 獲取最近的I2C事件

函式I2C_GetLastEvent 245

14.4.29 檢查I2C事件函式

I2C_CheckEvent 246

14.4.30 獲取I2C標誌位函式

I2C_GetFlagStatus 246

14.4.31 清除掛起標誌函式

I2C_ClearFlag 246

14.4.32 獲取I2C中斷函式

I2C_GetITStatus 247

14.4.33 清除中斷掛起位函式

I2C_ClearITPendingBit 247

14.5 綜合練習 248

14.6 小結 250

14.7 習題 251

第15章 通用定時器系統

( 教學視頻:39分鐘) 253

15.1 系統計時器(SysTick)及其

編程方法 253

15.1.1 SysTick暫存器結構 253

15.1.2 配置SysTick時鐘源函式

SysTick_CLKSourceConfig 253

15.1.3 設定SysTick重載值函式

SysTick_Setreload 254

15.1.4 使能或禁用SysTick計數器

函式SysTick_CounterCmd 254

15.1.5 使能或者取消SysTick中斷

函式SysTick_ITConfig 254

15.1.6 獲取SysTick計數器值函式

SysTick_GetCounter 255

15.1.7 獲取SysTick標誌位函式

SysTick_GetFlagStatus 255

15.2 通用定時器(TIM)結構 255

15.2.1 時基單元 256

15.2.2 計數器的模式 256

15.2.3 通用定時器的特殊工作

模式 257

15.3 通用定時器(TIM)的編程方法 258

15.3.1 TIM暫存器結構 260

15.3.2 復位TIM外設暫存器函式

TIM_DeInit 261

15.3.3 初始化TIMx時間基單元

函式TIM_TimeBaseInit 261

15.3.4 初始化TIMx外設函式

TIM_OCInit函式 261

15.3.5 初始化TIMx外設函式

TIM_ICInit 263

15.3.6 初始化TIM_TimeBaseInitStruct

結構函式 TIM_Time

BaseStructInit 263

15.3.7 初始化TIM_OCInitStruct結構

函式TIM_OCStructInit 264

15.3.8 初始化TIM_ICInitStruct結構

函式TIM_ICStructInit 264

15.3.9 使能或者禁用TIM外設函式

TIM_Cmd 264

15.3.10 使能或者禁用TIM中斷

函式TIM_ITConfig 265

15.3.11 配置DMA接口函式

TIM_DMAConfig 265

15.3.12 使能或者禁用DMA請求

函式TIM_DMACmd 265

15.3.13 配置TIMx內部時鐘函式

TIM_InternalClockConfig 266

15.3.14 配置TIMx內部觸發器為

外部時鐘函式 TIM_ITRx

ExternalClockConfig 266

15.3.15 配置TIMx觸發器為外部

時鐘函式TIM_TixExternal

Config 266

15.3.16 配置TIMx外部時鐘模型1函式

TIM_ETRClockMode1Config 266

15.3.17 配置TIMx外部時鐘模型2函式

TIM_ETRClockMode2Config 267

15.3.18 配置TIMx外部觸發函式TIM_ETRConfig 267

15.3.19 選擇TIMx輸入觸發源函式

TIM_SelectInputTrigger 267

15.3.20 設定TIMx預分頻函式

TIM_PrescalerConfig 268

15.3.21 設定TIMx計數器模式函式

TIM_CounterModeConfig 268

15.3.22 設定TIMx輸出1函式

TIM_ForcedOC1Config 268

15.3.23 設定TIMx輸出2函式

TIM_ForcedOC2Config 269

15.3.24 設定TIMx輸出3函式

TIM_ForcedOC3Config 269

15.3.25 設定TIMx輸出4函式

TIM_ForcedOC4Config 269

15.3.26 使能或禁用ARR上的

預裝載暫存器函式

TIM_ARRPreloadConfig 270

15.3.27 選擇外設捕獲比較DMA

源函式TIM_SelectCCDMA 270

15.3.28 使能或禁用CCR1上的

預裝載暫存器函式

TIM_OC1PreloadConfig 270

15.3.29 使能或禁用CCR2上的

預裝載暫存器函式

TIM_OC2PreloadConfig 271

15.3.30 使能或禁用CCR3上的

預裝載暫存器函式

TIM_OC3PreloadConfig 271

15.3.31 使能或禁用CCR4上的

預裝載暫存器函式

TIM_OC4PreloadConfig 271

15.3.32 設定捕獲比較1快速特徵

函式TIM_OC1FastConfig 272

15.3.33 設定捕獲比較2快速特徵

函式TIM_OC2FastConfig 272

15.3.34 設定捕獲比較3快速特徵

函式TIM_OC3FastConfig 272

15.3.35 設定捕獲比較4快速特徵

函式TIM_OC4FastConfig 273

15.3.36 清除或者保持OCREF1信號

函式TIM_ClearOC1Ref 273

15.3.37 清除或者保持OCREF2信號

函式TIM_ClearOC2Ref 273

15.3.38 清除或者保持OCREF3信號

函式TIM_ClearOC3Ref 274

15.3.39 清除或者保持OCREF4信號

函式TIM_ClearOC4Ref 274

15.3.40 使能或禁用更新事件函式

TIM_UpdateDisableConfig 274

15.3.41 設定TIMx編碼界面函式TIM_

EncoderInterfaceConfig 275

15.3.42 設定事件由軟體產生函式

TIM_GenerateEvent 275

15.3.43 設定TIMx通道1極性函式

TIM_OC1PolarityConfig 275

15.3.44 設定TIMx通道2極性函式

TIM_OC2PolarityConfig 276

15.3.45 設定TIMx通道3極性函式

TIM_OC3PolarityConfig 276

15.3.46 設定TIMx通道4極性函式

TIM_OC4PolarityConfig 276

15.3.47 設定TIMx更新請求源函式

TIM_UpdateRequestConfig 276

15.3.48 使能或禁用霍爾感測器接口

函式TIM_SelectHallSensor 277

15.3.49 設定TIM單脈衝模式函式

TIM_SelectOnePulseMode 277

15.3.50 選擇觸發輸出模式函式

TIM_SelectOutputTrigger 277

15.3.51 選擇TIMx從模式函式

TIM_SelectSlaveMode 278

15.3.52 設定或者重置主/從模式

函式TIM_SelectMaster

SlaveMode 278

15.3.53 設定TIM計數器暫存器

值函式TIM_SetCounter 278

15.3.54 設定TIM自動重裝載暫存

器值函式TIM_SetAutoreload 279

15.3.55 設定捕獲比較1暫存器值

函式TIM_SetCompare1 279

15.3.56 設定捕獲比較2暫存器值

函式TIM_SetCompare2 279

15.3.57 設定捕獲比較3暫存器值

函式TIM_SetCompare3 279

15.3.58 設定捕獲比較4暫存器值

函式TIM_SetCompare4 279

15.3.59 設定TIMx輸入捕獲1

預分頻函式TIM_SetIC1

Prescaler 280

15.3.60 設定TIMx輸入捕獲2

預分頻函式TIM_SetIC2

Prescaler 280

15.3.61 設定TIMx輸入捕獲3

預分頻函式TIM_SetIC3

Prescaler 280

15.3.62 設定TIMx輸入捕獲4

預分頻函式TIM_SetIC4

Prescaler 280

15.3.63 設定TIMx時鐘分割值函式TIM_SetClockDivision 281

15.3.64 獲取TIMx輸入捕獲1值

函式TIM_GetCapture1 281

15.3.65 獲取TIMx輸入捕獲2值

函式TIM_GetCapture2 281

15.3.66 獲取TIMx輸入捕獲3值

函式TIM_GetCapture3 281

15.3.67 獲取TIMx輸入捕獲4值

函式TIM_GetCapture4 282

15.3.68 獲取TIMx計數器值函式TIM_GetCounter 282

15.3.69 獲取TIMx預分頻值函式TIM_GetPrescaler 282

15.3.70 獲取TIM標誌位函式TIM_GetFlagStatus 282

15.3.71 清除掛起標誌位函式TIM_ClearFlag 283

15.3.72 獲取TIM中斷函式TIM_GetITStatus 283

15.3.73 清除中斷掛起標誌位函式TIM_ClearITPendingBit 283

15.4 綜合練習 283

15.5 小結 286

15.6 習題 286

第16章 高級控制定時器系統

( 教學視頻:46分鐘) 288

16.1 高級控制定時器(TIM1)結構 288

16.1.1 時基單元 288

16.1.2 計數器模式 289

16.1.3 重複向下計數器 290

16.1.4 高級控制定時器的特殊

工作模式 290

16.1.5 與霍爾元件的接口 291

16.2 高級控制定時器(TIM1)的

編程方法 291

16.2.1 TIM1暫存器結構 293

16.2.2 復位TIM1外設函式TIM1_DeInit 294

16.2.3 初始化TIM1時間基數單位

函式TIM1_TIM1BaseInit 295

16.2.4 初始化TIM1通道1函式TIM1_OC1Init 295

16.2.5 初始化TIM1通道2函式TIM1_OC2Init 295

16.2.6 初始化TIM1通道3函式TIM1_OC3Init 296

16.2.7 初始化TIM1通道4函式

TIM1_OC4Init 296

16.2.8 設定剎車特性函式

TIM1_BDTRConfig 297

16.2.9 初始化外設TIM1函式

TIM1_ICInit 297

16.2.10 設定PWM輸入模式函式TIM1_PWMIConfig 298

16.2.11 復位TIM1_TIM1BaseInit

Struct結構成員函式TIM1_

TIM1BaseStructInit 299

16.2.12 復位TIM1_OCInitStruct

結構成員函式TIM1_OC

StructInit 299

16.2.13 復位TIM1_ICInitStruct

結構成員函式TIM1_IC

StructInit 299

16.2.14 復位TIM1_BDTRInitStruct

結構成員函式 TIM1_BDTRStructInit 300

16.2.15 使能或者禁用TIM1外設

函式TIM1_Cmd 300

16.2.16 使能或禁用TIM1主輸出

函式TIM1_CtrlPWM

Outputs 300

16.2.17 使能或禁用TIM1中斷TIM1_ITConfig函式 300

16.2.18 設定DMA接口函式TIM1_DMAConfig 301

16.2.19 使能或禁用DMA請求

函式TIM1_DMACmd 301

16.2.20 設定DMA內部時鐘函式TIM1_InternalClockConfig 302

16.2.21 配置外部時鐘模式1函式

TIM1_ETRClockMode1

Config 302

16.2.22 配置外部時鐘模式2函式TIM1_ETRClockMode2Config 302

16.2.23 配置TIM1外部觸發函式TIM1_ETRConfig 302

16.2.24 設定內部觸發為外部時鐘模式

函式 TIM1_ITRxExternal

ClockConfig 303

16.2.25 設定TIM1觸發為外部時

鍾函式TIM1_TixExternal

ClockConfig 303

16.2.26 選擇TIM1輸入觸發源函式TIM1_SelectInputTrigger 303

16.2.27 使能或禁用更新事件函式TIM1_UpdateDisable

Config 304

16.2.28 設定更新請求源函式

TIM1_UpdateRequest

Config 304

16.2.29 使能或禁用霍爾感測器

接口函式TIM1_Select

HallSensor 304

16.2.30 設定TIM1單脈衝模式

函式TIM1_SelectOne

PulseMode 304

16.2.31 選擇觸發輸出模式函式

TIM1_SelectOutput

Trigger 304

16.2.32 選擇TIM1從模式函式

TIM1_SelectSlaveMode 305

16.2.33 選擇TIM1主/從模式

函式TIM1_SelectMaster

SlaveMode 305

16.2.34 設定TIM1編碼界面函式

TIM1_EncoderInterface

Config 305

16.2.35 設定TIM1預分頻器函式TIM1_PrescalerConfig 306

16.2.36 設定TIM1計數器模式

函式TIM1_CounterMode

Config 306

16.2.37 設定TIM1輸出1電平函式TIM1_ForcedOC1Config 306

16.2.38 設定TIM1輸出2電平函式TIM1_ForcedOC2Config 306

16.2.39 設定TIM1輸出3電平函式TIM1_ForcedOC3Config 307

16.2.40 設定TIM1輸出4電平函式TIM1_ForcedOC4Config 307

16.2.41 使能或禁用預裝載暫存器

TIM1_ARRPreloadConfig

函式 307

16.2.42 選擇TIM1外設的通信

事件函式TIM1_SelectCOM 307

16.2.43 選擇捕獲比較DMA源函式

TIM1_SelectCCDMA 308

16.2.44 設定或重置捕獲比較

控制位函式TIM1_CC

PreloadControl 308

16.2.45 使能或禁用CCR1上的

預裝載暫存器函式 TIM1_OC1PreloadConfig 308

16.2.46 使能或禁用CCR2上的

預裝載暫存器函式

TIM1_OC2PreloadConfig 308

16.2.47 使能或禁用CCR3上的

預裝載暫存器函式

TIM1_OC3PreloadConfig 309

16.2.48 使能或禁用CCR4上的

預裝載暫存器函式

TIM1_OC4PreloadConfig 309

16.2.49 設定捕獲比較1快速特徵

函式TIM1_OC1FastConfig 309

16.2.50 設定捕獲比較2快速特徵

函式TIM1_OC2FastConfig 309

16.2.51 設定捕獲比較3快速特徵

函式TIM1_OC3FastConfig 309

16.2.52 設定捕獲比較4快速特徵

函式TIM1_OC4FastConfig 310

16.2.53 清除或保持OCREF1信號

函式TIM1_ClearOC1Ref 310

16.2.54 清除或保持OCREF2信號

函式TIM1_ClearOC2Ref 310

16.2.55 清除或保持OCREF3信號

函式TIM1_ClearOC3Ref 310

16.2.56 清除或保持OCREF4信號

函式TIM1_ClearOC4Ref 311

16.2.57 設定事件由軟體產生函式TIM1_GenerateEvent 311

16.2.58 設定通道1極性函式TIM1_OC1PolarityConfig 311

16.2.59 設定通道1N極性函式TIM1_OC1NpolarityConfig 311

16.2.60 設定通道2極性函式

TIM1_OC2PolarityConfig 311

16.2.61 設定通道2N極性函式

TIM1_OC2NpolarityConfig 312

16.2.62 設定通道3極性函式

TIM1_OC3PolarityConfig 312

16.2.63 設定通道3N極性函式

TIM1_OC3NpolarityConfig 312

16.2.64 設定通道4極性函式

TIM1_OC4PolarityConfig 312

16.2.65 設定計數器暫存器值函式

TIM1_SetCounter 312

16.2.66 使能或禁用捕獲比較通道

x函式TIM1_CCxCmd 313

16.2.67 使能或禁用捕獲比較通道

xN函式TIM1_CCxNCmd 313

16.2.68 選擇TIM1輸出比較模式

函式TIM1_SelectOCxM 313

16.2.69 設定自動重裝載暫存器值

函式TIM1_SetAutoreload 314

16.2.70 設定捕獲比較1暫存器值

函式TIM1_SetCompare1 314

16.2.71 設定捕獲比較2暫存器值

函式TIM1_SetCompare2 314

16.2.72 設定捕獲比較3暫存器值

函式TIM1_SetCompare3 315

16.2.73 設定捕獲比較4暫存器值

函式TIM1_SetCompare4 315

16.2.74 設定輸入捕獲1預分頻值函

數TIM1_SetIC1Prescaler 315

16.2.75 設定輸入捕獲2預分頻值函

數TIM1_SetIC2Prescaler 315

16.2.76 設定輸入捕獲3預分頻值函

數TIM1_SetIC3Prescaler 315

16.2.77 設定輸入捕獲4預分頻值函

數TIM1_SetIC4Prescaler 316

16.2.78 設定時鐘分割值函式

TIM1_SetClockDivision 316

16.2.79 獲取輸入捕獲1的值函式

TIM1_GetCapture1 316

16.2.80 獲取輸入捕獲2的值函式

TIM1_GetCapture2 316

16.2.81 獲取輸入捕獲3的值函式

TIM1_GetCapture3 317

16.2.82 獲取輸入捕獲4的值函式

TIM1_GetCapture4 317

16.2.83 獲取TIM1計數器的值函式

TIM1_GetCounter 317

16.2.84 獲取TIM1預分頻值函式

TIM1_GetPrescaler 317

16.2.85 獲取TIM1標誌位函式

TIM1_GetFlagStatus 317

16.2.86 清除TIM1掛起標誌位函式

TIM1_ClearFlag 317

16.2.87 獲取TIM1中斷函式

TIM1_GetITStatus 318

16.2.88 清除TIM1中斷掛起

標誌位函式TIM1_

ClearITPendingBit 318

16.3 綜合練習 318

16.4 小結 320

16.5 習題 320

第17章 時鐘控制系統

( 教學視頻:43分鐘) 322

17.1 復位和時鐘控制(RCC) 322

17.1.1 復位的類型 322

17.1.2 時鐘的類型 323

17.2 復位和時鐘控制(RCC)的

編程方法 325

17.2.1 RCC暫存器結構 326

17.2.2 RCC外圍設備復位函式

RCC_DeInit 326

17.2.3 配置高速振盪器HSE函式

RCC_HSEConfig 327

17.2.4 等待HSE完成啟動函式

RCC_WaitForHSEStartUp 327

17.2.5 校正HIS函式RCC_

AdjustHSICalibrationValue 328

17.2.6 使能或禁用HIS函式

RCC_HSICmd 328

17.2.7 配置PLL函式RCC_

PLLConfig 328

17.2.8 使能或者禁用PLL函式

RCC_PLLCmd 328

17.2.9 配置系統時鐘函式

RCC_SYSCLKConfig 329

17.2.10 獲取系統時鐘源函式

RCC_GetSYSCLKSource 329

17.2.11 配置AHB時鐘函式

RCC_HCLKConfig 329

17.2.12 配置低速APB時鐘函式

RCC_PCLK1Config 330

17.2.13 配置高速APB時鐘函式

RCC_PCLK2Config 330

17.2.14 使能或者禁用RCC

中斷函式RCC_ITConfig 330

17.2.15 配置USB時鐘函式

RCC_USBCLKConfig 331

17.2.16 配置ADC時鐘函式

RCC_ADCCLKConfig 331

17.2.17 配置LSE函式

RCC_LSEConfig 331

17.2.18 使能或者禁用LSI函式

RCC_LSICmd 332

17.2.19 配置RTC時鐘函式RCC_RTCCLKConfig 332

17.2.20 使能或者禁用RTC時鐘

函式RCC_RTCCLKCmd 332

17.2.21 獲取時鐘頻率函式

RCC_GetClocksFreq 333

17.2.22 使能或禁用AHB外圍

設備時鐘函式RCC_AHB

PeriphClockCmd 334

17.2.23 使能或者禁用高速APB2

外圍設備時鐘函式RCC_

APB2PeriphClockCmd 334

17.2.24 使能或者禁用低速APB1

外圍設備時鐘函式RCC_

APB1PeriphClockCmd 334

17.2.25 高速APB2外圍設備復位

函式RCC_APB2Periph

ResetCmd 335

17.2.26 低速APB1外圍設備復位函式

RCC_APB1PeriphResetCmd 335

17.2.27 備份域復位函式

RCC_BackupResetCmd 335

17.2.28 使能或者禁用時鐘安全

系統函式RCC_Clock

SecuritySystemCmd 336

17.2.29 選擇輸出時鐘源函式

RCC_MCOConfig 336

17.2.30 獲取RCC標誌函式

RCC_GetFlagStatus 336

17.2.31 清除RCC復位標誌函式

RCC_ClearFlag 337

17.2.32 獲取RCC中斷函式

RCC_GetITStatus 337

17.2.33 清除RCC中斷掛起位函式

RCC_ClearITPendingBit 338

17.3 實時時鐘(RTC) 338

17.3.1 RTC的復位 338

17.3.2 讀RTC暫存器 338

17.3.3 配置RTC暫存器 339

17.3.4 RTC標誌的設定 339

17.4 實時時鐘(RTC)的編程方法 339

17.4.1 RTC暫存器結構 340

17.4.2 使能或者禁用RTC中斷

函式RTC_ITConfig 340

17.4.3 進入RTC配置模式函式

RTC_EnterConfigMode 341

17.4.4 跳出RTC配置模式函式

RTC_ExitConfigMode 341

17.4.5 獲取RTC計數值函式

RTC_GetCounter 341

17.4.6 設定RTC計數值函式

RTC_SetCounter 341

17.4.7 獲取RTC預分頻數值函式

TC_GetPrescaler 342

17.4.8 設定RTC預分頻數值函式

RTC_SetPrescaler 342

17.4.9 設定RTC警報值函式

RTC_SetAlarm 342

17.4.10 獲取RTC分割值函式

RTC_GetDivider 342

17.4.11 等待RTC暫存器寫完成函式

RTC_WaitForLastTask 342

17.4.12 等待同步函式

RTC_WaitForSynchro 343

17.4.13 獲取RTC標誌位函式

RTC_GetFlagStatus 343

17.4.14 清除RTC掛起標誌位函式

RTC_ClearFlag 343

17.4.15 獲取RTC中斷函式

RTC_GetITStatus 343

17.4.16 清除RTC中斷掛起位函式

RTC_ClearITPendingBit 344

17.5 綜合練習 344

17.6 小結 348

17.7 習題 348

第18章 看門狗系統

( 教學視頻:22分鐘) 351

18.1 獨立看門狗(IWDG)簡介 351

18.2 獨立看門狗(IWDG)的編程方法 352

18.2.1 IWDG暫存器結構 352

18.2.2 使能或禁用寫暫存器函式

IWDG_WriteAccessCmd 352

18.2.3 設定IWDG預分頻因子

函式IWDG_SetPrescaler 353

18.2.4 設定IWDG重載暫存器

函式IWDG_SetReload 353

18.2.5 重載IWDG計數器函式

IWDG_ReloadCounter 353

18.2.6 使能獨立看門狗函式

IWDG_Enable 353

18.2.7 獲取IWDG標誌函式

IWDG_GetFlagStatus 354

18.3 視窗看門狗(WWDG)簡介 354

18.3.1 視窗看門狗(WWDG)的

基本功能 355

18.3.2 編寫視窗看門狗(WWDG)

逾時程式 355

18.4 視窗看門狗(WWDG)的

編程方法 355

18.4.1 WWDG暫存器結構 356

18.4.2 復位WWDG外圍設備暫存器

復位函式WWDG_DeInit 356

18.4.3 設定WWDG預分頻因子

函式WWDG_SetPrescaler 356

18.4.4 設定視窗值函式

WWDG_SetWindowValue 357

18.4.5 使能EWI函式

WWDG_EnableIT 357

18.4.6 設定WWDG計數器函式

WWDG_SetCounter 357

18.4.7 使能WWDG函式

WWDG_Enable 357

18.4.8 獲取中斷標誌位函式

WWDG_GetFlagStatus 357

18.4.9 清除中斷標誌位函式

WWDG_ClearFlag 358

18.5 綜合練習 358

18.6 小結 362

18.7 習題 362

第19章 備份暫存器(BKP)

( 教學視頻:18分鐘) 364

19.1 備份暫存器(BKP)簡介 364

19.1.1 侵入檢測 364

19.1.2 RTC校準 364

19.2 備份暫存器(BKP)的編程方法 365

19.2.1 BKP暫存器結構 365

19.2.2 BKP暫存器復位函式

BKP_DeInit 366

19.2.3 配置侵入檢測引腳有效

電平函式BKP_Tamper

PinLevelConfig 366

19.2.4 使能或禁用侵入檢測引腳

函式BKP_TamperPinCmd 366

19.2.5 使能或禁用侵入檢測引腳

中斷函式BKP_ITConfig 366

19.2.6 使能或禁用校準時鐘輸出

函式 BKP_RTCCalibration

ClockOutputCmd 367

19.2.7 設定RTC時鐘校準值函式

BKP_SetRTCCalibrationValue 367

19.2.8 寫備份暫存器函式BKP_

WriteBackupRegister 367

19.2.9 讀備份暫存器函式BKP_

ReadBackupRegister 367

19.2.10 獲取侵入檢測引腳事件標誌

函式BKP_GetFlagStatus 367

19.2.11 清除事件掛起標誌函式

BKP_ClearFlag 368

19.2.12 獲取中斷狀態函式

BKP_GetITStatus 368

19.2.13 清除中斷掛起位函式

BKP_ClearITPendingBit 368

19.3 綜合練習 368

19.4 小結 370

19.5 習題 370

第20章 DMA控制器

( 教學視頻:26分鐘) 372

20.1 DMA控制器簡介 372

20.1.1 DMA暫存器的基本特性 372

20.1.2 DMA暫存器的基本功能 373

20.2 DMA控制器的編程方法 375

20.2.1 DMA暫存器結構 375

20.2.2 DMA通道暫存器復位函式

DMA_DeInit 375

20.2.3 參數初始化函式DMA_Init 376

20.2.4 復位DMA_InitStruct函式

DMA_StructInit 378

20.2.5 使能或禁用DMA通道函式

DMA_Cmd 378

20.2.6 使能或禁用DMA通道

中斷函式DMA_ITConfig 378

20.2.7 獲取剩餘數據單元函式

DMA_GetCurrDataCounter 379

20.2.8 獲取DMA通道標誌函式

DMA_GetFlagStatus 379

20.2.9 清除掛起標誌函式DMA_

ClearFlag 380

20.2.10 獲取中斷狀態函式

DMA_GetITStatus 380

20.2.11 清除掛起位函式DMA

ClearITPendingBit 381

20.3 綜合練習 381

20.4 小結 383

20.5 習題 383

第21章 電源控制(PWR)

( 教學視頻:34分鐘) 386

21.1 電源控制的結構 386

21.2 電源管理器 387

21.2.1 上電復位(POR)和

掉電復位(PDR) 387

21.2.2 可程式電壓監測器(PVD) 387

21.3 低功耗模式 387

21.3.1 降低系統時鐘 388

21.3.2 外部時鐘的控制 388

21.3.3 睡眠模式 388

21.3.4 停止模式 389

21.3.5 待機模式 390

21.3.6 低功耗模式下的自動喚醒

(AWU) 390

21.4 電源控制(PWR)的編程方法 390

21.4.1 GPIO暫存器結構 391

21.4.2 PWR外圍暫存器復位函式

PWR_DeInit 391

21.4.3 使能或禁用備份暫存器函式

PWR_BackupAccessCmd 391

21.4.4 使能或禁用電源電壓探測

器函式PWR_PVDCmd 391

21.4.5 配置電壓門限值函式

PWR_PVDLevelConfig 392

21.4.6 使能或禁用喚醒引腳函式

PWR_WakeUpPinCmd 392

21.4.7 進入STOP模式函式

PWR_EnterSTOPMode 392

21.4.8 進入STANDBY模式函式

PWR_EnterSTANDBYMode 393

21.4.9 獲取PWR標誌位狀態函式

PWR_GetFlagStatus 393

21.4.10 清除PWR掛起標誌位

函式PWR_ClearFlag 393

21.5 綜合練習 394

21.6 小結 397

21.7 習題 397

第四篇 嵌入式系統實戰

第22章 嵌入式實時作業系統

FREERTOS的移植

熱門詞條

聯絡我們