《21天学通ARM嵌入式开发》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:薛园园编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121141621
  • 页数:418 页
图书介绍:本书分为四篇,共23章,全面详细地讲述了ARM处理器的原理、程序设计方法、ARM处理器编程指南及嵌入式系统移植。首先介绍了ARM处理器的构架及如何搭建一个ARM嵌入式开发平台,接着介绍了ARM Cortex-M3的指令集,基于Cortex-M3的STM32系列芯片及一些典型的嵌入式操作系统。然后结合STM32的各个功能部件详细讲解了ARM处理器的硬件编程方法。最后本书还介绍了基于ARM Cortex-M3的STM32芯片如何移植流行的嵌入式操作系统。

第一篇 走进嵌入式系统开发 25

第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-Ⅱ 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嵌入式系统开发基础 62

第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

72.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嵌入式控制器 98

第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 Delnit 105

9.2.3复用功能寄存器复位函数GPIO_AFIODelnit 106

9.2.4参数初始化函数GPIO_Init 106

9.2.5复位GPIO_InitStruct函数GPIO_StructInit 108

9.2.6读输入引脚函数GPIO_ReadlnputDataBit 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_ProgtamWord 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_GetWriteProtectionByte 125

10.3.18获取读保护状态函数Flash_GetReadOutProtectionStatus 125

10.3.19获取预取缓冲区状态函数Flash_GetPrefectchBufferStatus 125

10.3.20使能或禁用中断函数Flash_ITConfig 126

10.3.21获取标志位状态函数Flash_GetFlagStatus 126

10.3.22清除挂起标志函数Flash_C1earFlag 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_Delnit 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_DiseModeChannelCountConfig 146

11.3.15使能或禁用常规组非连续模式函数ADC_DiscModeCmd 146

11.3.16配置ADC常规信道函数ADC_RegularChannelConfig 147

11.3.17使能或禁用外部触发函数ADC_ExtemalTrigConvCmd 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_ExtemalTrigInjectedConvConfig 149

11.3.23使能或禁用注入信道转换函数ADC_ExtemalTrigInjectedConvCmd 150

11.3.24使能或禁用开始注入信道转换函数ADC_SoftwareStartInjectedConvCmd 150

11.3.25获取启动转换注入状态函数ADC_GetSoftwareStartInjectedConvStatus 151

11.3.26配置ADC注入信道函数ADC_InjectedChannelConfig 151

11.3.27配置注入信道音序器长度函数ADC_InectedSequencerLengthConfig 152

11.3.28设置注入信道转换值位移函数ADC_SetInjectedOffset 152

11.3.29获取注入信道转换结果函数ADC_GetInjectedConversionValue 153

11.3.30使能或禁用模拟看门狗函数ADC_AnalogWatchdogCmd 153

11.3.31配置模拟看门狗域值函数ADC_AnalogWatchdogThresholdsConfig 154

11.3.32配置模拟看门狗保护函数ADC_AnalogWatchdogSingleChannelConfig 154

11.3.33使能或禁用温度传感函数ADC_TempSensorVrefintCmd 154

11.3.34获取ADC标志函数ADC_GetFlagStatus 155

11.3.35清除挂起标志函数ADC_ClearFlag 155

11.3.36获取中断函数ADC_GetlTStatus 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_Delnit 163

12.2.3复位SCB外设函数NVIC_SCBDelnit 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_GetCunentPendingRQChannel 166

12.2.14获取IRQ通道挂起位函数NVIC_GedRQChannelPendingBitStatus 166

12.2.15设置中断挂起位函数NVIC_GetlRQChannelPendingBit 166

12.2.16清除中断挂起位函数NVIC_ClearlRQChannelPendingBir 167

12.2.17返回活动句柄函数NVIC_GetCurrentActiveHandle 167

12.2.18获取IRQ通道活动位函数NVIC_GetlRQChannelActiveBitStatus 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_GetSystemHandlerPendingBitStatus 170

12.2.27设置系统句柄挂起位函数NVIC_SetSystemHandlerPendingBit 170

12.2.28清除系统句柄挂起位函数NVIC_ClearSystemHandlerPendingBit 171

12.2.29获取系统句柄活动位函数NVIC_GetSystemHandlerActiveBitStatus 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_Delnit 175

12.4.3初始化EXTI外设函数EXTI_Init 175

12.4.4复位EXTI_InitStruct函数EXTI_StructInit 176

12.4.5软中断函数EXTI_GenerateSWlnterrupt 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_Delnit 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_Delnit 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_NSSIntemalSoftwareConfig 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_GetlTStatus 30

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_Delnit 236

14.4.3初始化I2C外设函数I2C_Init 237

14.4.4复位I2C_InitStruct结构函数I2C_Structlnit 238

14.4.5使能或者禁用I2C外设函数I2C_Cmd 238

14.4.6使能或者禁用DMA请求函数I2C_DMACmd 238

14.4.7标示最后DMA传输函数12C_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接收数据函数12C_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值函数12C_GetPEC 244

14.4.25使能或者禁用I2C_ARP函数I2C_ARPCmd 244

14.4.26使能或禁用I2C时钟伸展函数I2C_StretchClockCmd 245

14.4.27配置占空比函数I2C_FastModeDutyCycleConfig 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.1TIM寄存器结构 260

15.3.2复位TIM外设寄存器函数TIM_Delnit 261

15.3.3初始化TIMx时间基单元函数TIM_TimeBaselnit 261

15.3.4初始化TIMx外设函数TIM_OClnit函数 261

15.3.5初始化TIMx外设函数TIM_ICInit 263

15.3.6初始化TIM_TimeBaselnitStruct结构函数TIM_TimeBaseStructInit 263

15.3.7初始化TIM_OCInitStruct结构函数TIM_OCStructInit 264

15.3.8初始化TIM_ICInitStruct结构函数TIM_ICStructlnit 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_ntemalClockConfig 266

15.3.14配置TIMx内部触发器为外部时钟函数TIM_ITRxExternalClockConfig 266

15.3.15配置TIMx触发器为外部时钟函数TIM_TixExternal Config 266

15.3.16配置TIMx外部时钟模型1函数TIM_ETRClockMode1Config 266

15.3.17配置TIMx外部时钟模型2函数TIM_ETRCIockMode2Config 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_ForcedOCIConfig 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_C1earOC2Ref 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_EncoderlnterfaceConfig 275

15.3.42设置事件由软件产生函数TIM_GenerateEvent 275

15.3.43设置TIMx通道1极性函数TIM_OC1PolarityConfig 275