21天学通Linux嵌入式开发

21天学通Linux嵌入式开发

薛园园, 等编著

出版社:电子工业出版社

年代:2010

定价:49.8

书籍简介:

本书分为四篇,共25章,全面详细地讲述了ARM处理器的原理、程序设计方法、ARM处理器编程指南及嵌入式系统移植。首先介绍了ARM处理器的构架及如何搭建一个ARM嵌入式开发平台,接着介绍了ARM Cortex-M3的指令集,基于Cortex-M3的STM32系列芯片及一些典型的嵌入式操作系统。然后结合STM32的各个功能部件详细讲解了ARM处理器的硬件编程方法。最后本书还介绍了基于ARM Cortex-M3的STM32芯片如何移植流行的嵌入式操作系统。

书籍目录:

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

第1章 嵌入式系统开发概述(教学视频:44分钟) 29

1.1 何为嵌入式系统 29

1.1.1 嵌入式系统的概念 29

1.1.2 嵌入式系统的基本结构 30

1.1.3 嵌入式处理器 30

1.2 嵌入式系统的特点及发展趋势 32

1.3 嵌入式系统的开发过程 32

1.3.1 芯片选择 32

1.3.2 配置硬件平台 33

1.3.3 BootLoader移植 33

1.3.4 操作系统裁减 33

1.3.5 系统移植 33

1.3.6 应用程序开发 33

1.4 如何成为嵌入式开发人员 33

1.5 小结 34

1.6 习题 34

第2章 嵌入式操作系统简介(教学视频:37分钟) 35

2.1 嵌入式操作系统概述 35

2.1.1 嵌入式操作系统的发展历史 35

2.1.2 嵌入式操作系统的分类 35

2.1.3 嵌入式操作系统的特点 36

2.2 主流嵌入式操作系统简介 36

2.2.1 VxWorks 36

2.2.2 pSOS 37

2.2.3 Palm OS 37

2.2.4 QNX 38

2.2.5 OS-9 38

2.2.6 LynxOS 38

2.2.7 Windows CE 39

2.2.8 μC/OS-II 39

2.2.9 嵌入式Linux 40

2.2.10 FreeRTOS 40

2.3 小结 40

2.4 习题 40

第3章 ARM处理器构架(教学视频:53分钟) 42

3.1 ARM体系结构概述 42

3.1.1 ARM简介 42

3.1.2 CISC的体系结构 42

3.1.3 RISC的体系结构 43

3.1.4 ARM微处理器的应用领域 43

3.1.5 ARM体系结构的特点 44

3.2 ARM处理器系列 44

3.2.1 ARM7微处理器 44

3.2.2 ARM9微处理器 45

3.2.3 ARM9E微处理器 45

3.2.4 ARM10E微处理器 45

3.2.5 ARM11微处理器 46

3.2.6 SecurCore微处理器 46

3.2.7 StrongARM微处理器 46

3.2.8 Xscale微处理器 47

3.2.9 Cortex-M3微处理器 47

3.2.10 基于ARM核的芯片选择 47

3.3 ARM处理器结构 48

3.3.1 ARM的系统构架 48

3.3.2 ARM的流水线结构 49

3.3.3 ARM的存储器结构 49

3.4 ARM编程模型 50

3.4.1 工作模式和工作状态 50

3.4.2 特权访问和用户访问 50

3.4.3 数据类型 50

3.4.4 存储器格式 50

3.5 ARM开发调试工具综述 51

3.6 小结 51

3.7 习题 51

第4章 搭建嵌入式开发平台(教学视频:39分钟) 53

4.1 基于ARM的RealView MDK开发环境 53

4.1.1 RealView MDK简介 53

4.1.2 RealView MDK系统安装需求 54

4.1.3 RealView MDK的安装 54

4.1.4 RealView MDK集成开发环境总览 55

4.1.5 RealView MDK的菜单栏 56

4.1.6 RealView MDK的工具栏 59

4.1.7 RealView MDK的快捷键 62

4.2 基于ARM Cortex-M3的STM32选型表 63

4.3 基于ARM Cortex-M3的STM32最小开发系统 63

4.4 程序下载方式 64

4.5 小结 65

4.6 习题 65

第二篇 ARM嵌入式系统开发基础

第5章 ARM Cortex-M3指令集(教学视频:30分钟) 66

5.1 数据传送指令 66

5.1.1 寄存器间数据传送指令 66

5.1.2 存储器数据传送指令 66

5.1.3 索引数据传送指令 67

5.2 数据处理指令 68

5.2.1 算术四则运算指令 68

5.2.2 逻辑及移位操作指令 69

5.2.3 数据序转及位操作指令 70

5.3 子程序呼叫及转移指令 70

5.4 隔离指令 71

5.5 不支持的指令 71

5.6 小结 72

5.7 习题 72

第6章 基于ARM Cortex-M3的STM32在应用编程(教学视频:31分钟) 74

6.1 在应用编程简介 74

6.2 STM32的启动配置 74

6.3 STM32的在应用编程 75

6.3.1 电路原理图 75

6.3.2 BootLoader固件下载步骤 76

6.4 小结 78

6.5 习题 79

第7章 嵌入式实时操作系统FreeRTOS(教学视频:42分钟) 80

7.1 嵌入式实时操作系统FreeRTOS简介 80

7.2 嵌入式操作系统基本概念 80

7.2.1 多任务 81

7.2.2 调度 81

7.2.3 上下文切换 82

7.2.4 实时应用和调度 82

7.3 FreeRTOS的API模块 82

7.3.1 定制 82

7.3.2 任务创建和删除 84

7.3.3 任务控制 85

7.3.4 内核控制 86

7.4 小结 87

7.5 习题 87

第8章 嵌入式系统UC/OS-Ⅱ(教学视频:39分钟) 88

8.1 UC/OS-Ⅱ嵌入式系统简介 88

8.2 UC/OS-Ⅱ任务管理 88

8.2.1 建立任务OSTaskCreate 89

8.2.2 建立任务OSTaskCreate Ext 89

8.2.3 任务堆栈 91

8.2.4 堆栈检验OSTaskStkChk 91

8.2.5 删除任务OSTaskDel 92

8.2.6 请求删除任务OSTaskDelReq 93

8.2.7 改变任务的优先级OSTaskChangePrio 94

8.2.8 挂起任务OSTaskSuspend 95

8.2.9 恢复任务OSTaskResume 96

8.2.10 获得有关任务的信息OSTaskQuery 97

8.3 任务之间的通信与同步 98

8.3.1 信号量 98

8.3.2 邮箱 98

8.3.3 消息队列 98

8.4 小结 99

8.5 习题 99

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

第9章 通用I/O接口(教学视频:48分钟) 100

9.1 通用I/O接口的结构 100

9.1.1 GPIO的基本结构 100

9.1.2 GPIO的功能 101

9.1.3 GPIO的功能配置 102

9.1.4 复用功能与重映射 103

9.2 通用I/O接口的编程方法 106

9.2.1 GPIO寄存器结构 107

9.2.2 GPIO寄存器复位函数GPIO_DeInit 107

9.2.3 复用功能寄存器复位函数GPIO_AFIODeInit 108

9.2.4 参数初始化函数GPIO_Init 108

9.2.5 复位GPIO_InitStruct函数GPIO_StructInit 110

9.2.6 读输入引脚函数GPIO_ReadInputDataBit 110

9.2.7 读输入端口函数GPIO_ReadInputData 111

9.2.8 读输出引脚函数GPIO_ReadOutputDataBit 111

9.2.9 读输出端口函数GPIO_ReadOutputData 111

9.2.10 置位引脚函数GPIO_SetBits 111

9.2.11 清除引脚位函数GPIO_ResetBits 112

9.2.12 置位或清除引脚函数GPIO_WriteBit 112

9.2.13 写端口函数GPIO_Write 112

9.2.14 引脚配置锁定函数GPIO_PinLockConfig 113

9.2.15 选择事件输出引脚函数GPIO_EventOutputConfig 113

9.2.16 使能事件输出函数GPIO_EventOutputCmd 113

9.2.17 改变引脚映射函数GPIO_PinRemapConfig 114

9.2.18 选择EXTI线函数GPIO_EXTILineConfig 115

9.3 综合练习 115

9.4 小结 116

9.5 习题 116

第10章 Flash(教学视频:24分钟) 118

10.1 Flash闪存的结构 118

10.2 Flash闪存的基本特性 119

10.2.1 Flash闪存读取 119

10.2.2 Flash闪存编程和擦除 119

10.3 Flash的编程方法 119

10.3.1 Flash寄存器结构 120

10.3.2 设置代码延时值函数Flash_SetLatency 121

10.3.3 使能或禁用半周期访问函数Flash_HalfCycleAccessCmd 121

10.3.4 使能或禁用预取缓冲区函数Flash_PrefetchBufferCmd 121

10.3.5 解锁擦除控制器函数Flash_Unlock 122

10.3.6 锁定擦除控制器函数Flash_Lock 122

10.3.7 擦除页函数Flash_ErasePage 122

10.3.8 擦除全部页函数Flash_EraseAllPages 122

10.3.9 擦除选项字节函数Flash_EraseOptionBytes 123

10.3.10 字写入函数Flash_ProgramWord 123

10.3.11 半字写入函数Flash_ProgramHalfWord 124

10.3.12 写选项字节函数Flash_ProgramOptionByteData 124

10.3.13 页写保护函数Flash_EnableWriteProtection 125

10.3.14 使能或禁用读保护函数Flash_ReadOutProtection 126

10.3.15 写选项字节函数Flash_UserOptionByteConfig 127

10.3.16 获取选项字节函数Flash_GetUserOptionByte 128

10.3.17 获取写保护选项字节函数Flash_GetWriteProtection OptionByte 128

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

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

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

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

10.3.22 清除挂起标志函数Flash_ClearFlag 130

10.3.23 获取Flash状态函数Flash_GetStatus 130

10.3.24 等待操作结束函数Flash_WaitForLastOperation 131

10.4 综合练习 131

10.5 小结 133

10.6 习题 133

第11章 ADC系统(教学视频:52分钟) 134

11.1 ADC系统概述 134

11.2 ADC系统功能特性 135

11.2.1 ADC开关控制 135

11.2.2 ADC时钟 135

11.2.3 ADC通道选择 135

11.2.4 ADC的转换模式 135

11.2.5 中断 136

11.2.6 模拟看门狗 136

11.2.7 ADC的扫描模式 136

11.2.8 ADC的注入通道管理 137

11.2.9 间断模式 137

11.2.10 ADC的校准模式 137

11.2.11 ADC的数据对齐 138

11.2.12 可编程的通道采样时间 138

11.2.13 外部触发转换 138

11.2.14 DMA请求 139

11.2.15 双ADC模式 139

11.2.16 温度传感器 141

11.3 ADC系统的编程方法 141

11.3.1 ADC寄存器结构 142

11.3.2 ADC寄存器复位函数ADC_DeInit 143

11.3.3 参数初始化函数ADC_Init 143

11.3.4 复位ADC_InitStruct函数ADC_StructInit 145

11.3.5 使能或禁用ADC模块函数ADC_Cmd 145

11.3.6 使能或禁用DMA请求函数ADC_DMACmd 146

11.3.7 使能或禁用ADC中断函数ADC_ITConfig 146

11.3.8 复位ADC校准寄存器函数ADC_ResetCalibration 146

11.3.9 获取复位校准寄存器状态函数ADC_GetResetCalibrationStatus 147

11.3.10 开始ADC校准函数ADC_StartCalibration 147

11.3.11 获取ADC校准状态ADC_GetCalibrationStatus 147

11.3.12 使能或禁用软件转换函数ADC_SoftwareStartConvCmd 147

11.3.13 获取软件开始转换状态函数ADC_GetSoftwareStartConvStatus 148

11.3.14 配置常规组非连续模式函数 ADC_DiscModeChannelCountConfig 148

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

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

11.3.17 使能或禁用外部触发函数ADC_ExternalTrigConvCmd 150

11.3.18 获取转换结果函数ADC_GetConversionValue 151

11.3.19 获取双重转换结果函数ADC_GetDualModeConversionValue 151

11.3.20 使能或禁用自动注入组转换函数ADC_AutoInjectedConvCmd 151

11.3.21 使能或禁用非连续模式函数ADC_InjectedDiscModeCmd 151

11.3.22 配置外部触发器函数ADC_ExternalTrigInjectedConvConfig 152

11.3.23 使能或禁用注入信道转换函数ADC_ExternalTrigInjectedConvCmd 152

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

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

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

11.3.27 配置注入信道音序器长度函数ADC_InjectedSequencerLengthConfig 155

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

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

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

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

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

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

11.3.34 获取ADC标志函数ADC_GetFlagStatus 157

11.3.35 清除挂起标志函数ADC_ClearFlag 158

11.3.36 获取中断函数ADC_GetITStatus 158

11.3.37 清除中断挂起位函数ADC_ClearITPendingBit 158

11.4 综合练习 159

11.5 小结 160

11.6 习题 160

第12章 中断系统(教学视频:32分钟) 161

12.1 嵌套向量中断控制器(NVIC) 161

12.2 NVIC的编程方法 163

12.2.1 NVIC寄存器结构 164

12.2.2 复位NVIC外设函数NVIC_DeInit 165

12.2.3 复位SCB外设函数NVIC_SCBDeInit 165

12.2.4 配置优先级组函数NVIC_PriorityGroupConfig 166

12.2.5 初始化NVIC外设函数NVIC_Init 166

12.2.6 复位NVIC_InitStruct函数NVIC_StructInit 167

12.2.7 使能PRIMASK优先级函数NVIC_SETPRIMASK 167

12.2.8 用PRIASK优先级函数NVIC_RESETPRIMASK 167

12.2.9 使能FAULTMASK优先级函数NVIC_SETFAULTMASK 167

12.2.10 禁用FAULTMASK优先级函数NVIC_RESETFAULTMASK 167

12.2.11 配置执行优先级函数NVIC_BASEPRICONFIG 168

12.2.12 获取BASEPRI掩码值函数NVIC_GetBASEPRI 168

12.2.13 获取挂起服务的IRQ通道标识符函数NVIC_GetCurrentPendingIRQChannel 168

12.2.14 获取IRQ通道挂起位函数 NVIC_GetIRQChannelPendingBitStatus 168

12.2.15 设置中断挂起位函数NVIC_GetIRQChannelPendingBit 169

12.2.16 清除中断挂起位函数NVIC_ClearIRQChannelPendingBit 169

12.2.17 返回活动句柄函数NVIC_GetCurrentActiveHandle 169

12.2.18 获取IRQ通道活动位函数 NVIC_GetIRQChannelActiveBitStatus 169

12.2.19 获取ID号函数NVIC_GetCPUID 170

12.2.20 设置向量表和偏移量函数NVIC_SetVectorTable 170

12.2.21 系统复位函数NVIC_GenerateSystemReset 170

12.2.22 核复位函数NVIC_GenerateCoreReset 170

12.2.23 低功耗模式条件函数NVIC_SystemLPConfig 170

12.2.24 使能或禁用系统句柄函数NVIC_SystemHandlerConfig 171

12.2.25 配置系统句柄优先级函数NVIC_SystemHandlerPriorityConfig 171

12.2.26 获取系统句柄挂起位函数NVIC_GetSystemHandlerPendingBitStatus 172

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

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

12.2.29 获取系统句柄活动位函数NVIC_GetSystemHandlerActiveBitStatus 173

12.2.30 获取系统故障句柄源函数NVIC_GetFaultHandlerSources 174

12.2.31 获取故障句柄位置函数NVIC_GetFaultAddress 175

12.3 外部中断/事件控制器(EXTI) 175

12.3.1 EXTI主要特性 175

12.3.2 EXTI功能说明 176

12.4 EXTI的编程方法 176

12.4.1 EXTI寄存器结构 177

12.4.2 复位EXTI外设函数EXTI_DeInit 177

12.4.3 初始化EXTI外设函数EXTI_Init 177

12.4.4 复位EXTI_InitStruct函数EXTI_StructInit 178

12.4.5 软中断函数EXTI_GenerateSWInterrupt 178

12.4.6 获取标志状态函数EXTI_GetFlagStatus 179

12.4.7 清除挂起标志函数EXTI_ClearFlag 179

12.4.8 获取EXTI置位函数EXTI_GetITStatus 179

12.4.9 清除挂起位函数EXTI_ClearITPendingBit 179

12.5 综合练习 180

12.6 小结 184

12.7 习题 184

第13章 异步串行通信接口(教学视频:59分钟) 185

13.1 USART结构 185

13.1.1 USART特征描述 185

13.1.2 USART发送器 185

13.1.3 USART接收器 186

13.1.4 LIN模式 186

13.1.5 USART同步模式 187

13.1.6 USART单线半双工通信 187

13.1.7 USART的智能卡功能 187

13.1.8 USART的IrDA模式 188

13.1.9 USART的DMA通信 188

13.1.10 USART的硬件流控制 189

13.1.11 USART的中断请求 189

13.2 USART编程方法 190

13.2.1 USART寄存器结构 191

13.2.2 USART寄存器复位函数USART_DeInit 191

13.2.3 参数初始化函数USART_Init 191

13.2.4 复位USART_InitStruct函数USART_StrucInit 193

13.2.5 使能或禁用USART函数USART_Cmd 194

13.2.6 使能或禁用中断函数USART_ITConfig 194

13.2.7 使能或禁用DMA函数USART_DMACmd 195

13.2.8 设置节点地址函数USART_SetAddress 195

13.2.9 选择唤醒方式函数USART_WakeUpConfig 196

13.2.10 USART模式函数USART_ReceiverWakeUpCmd 196

13.2.11 LIN间隔检波长度函数USART_LINBreakDetectionConfig 196

13.2.12 使能或者禁用LIN模式函数USART_LINCmd 196

13.2.13 发送数据函数USART_SendData 197

13.2.14 接收数据函数USART_ReceiveData 197

13.2.15 传输间断字符函数USART_SendBreak 197

13.2.16 设置预警时间函数USART_SetGuardTime 197

13.2.17 设置时钟预分频器函数USART_SetPrescaler 198

13.2.18 使能或者禁用智能卡模式函数USART_SmartCardCmd 198

13.2.19 使能或禁用NACK函数USART_SmartCardNackCmd 198

13.2.20 使能或者禁用半双工模式函数USART_HalfDuplexCmd 199

13.2.21 配置IrDA模式函数USART_IrDAConfig 199

13.2.22 使能或者禁用IrDA模式函数USART_IrDACmd 199

13.2.23 获取标志是否置位函数USART_GetFlagStatus 200

13.2.24 清除未决标志函数USART_ClearFlag 200

13.2.25 获取中断状态函数USART_GetITStatus 200

13.2.26 清除中断未决位函数USART_ClearITPendingBit 201

13.3 CAN结构 202

13.3.1 初始化模式 202

13.3.2 正常模式 203

13.3.3 睡眠模式 203

13.3.4 测试模式 203

13.3.5 静默模式 203

13.3.6 环回模式 204

13.3.7 环回静默模式 204

13.4 CAN编程方法 204

13.4.1 CAN寄存器结构 205

13.4.2 CAN寄存器复位函数CAN_DeInit 206

13.4.3 参数初始化函数CAN_Init 206

13.4.4 过滤参数初始化函数CAN_FilterInit 208

13.4.5 复位CAN_InitStruct函数CAN_StructInit 210

13.4.6 使能或禁用CAN中断函数CAN_ITConfig 210

13.4.7 初始化报文发送函数CAN_Transmit 211

13.4.8 检查报文发送函数CAN_TransmitStatus 212

13.4.9 取消发送函数CAN_CancelTransmit 213

13.4.10 释放FIFO函数CAN_FIFORelease 213

13.4.11 获取挂起报文数量函数CAN_MessagePending 214

13.4.12 报文接收函数CAN_Receive 214

13.4.13 低功耗模式函数CAN_Sleep 215

13.4.14 唤醒CAN模块函数CAN_WakeUp 215

13.4.15 获取CAN标志函数CAN_GetFlagStatus 216

13.4.16 清除挂起标志CAN_ClearFlag 216

13.4.17 获取中断状态函数CAN_GetITStatus 216

13.4.18 清除中断挂起位函数CAN_ClearITPendingBit 217

13.5 综合练习 218

13.6 小结 220

13.7 习题 220

第14章 同步串行通信接口(教学视频:52分钟) 222

14.1 SPI结构 222

14.1.1 SPI从模式工作原理 223

14.1.2 SPI主模式工作原理 223

14.1.3 SPI通信的CRC 224

14.1.4 SPI的DMA通信 224

14.1.5 SPI的中断请求 224

14.2 SPI编程方法 225

14.2.1 SPI寄存器结构 225

14.2.2 复位SPI外设寄存器函数SPI_DeInit 226

14.2.3 初始化外设SPIx寄存器函数SPI_Init 226

14.2.4 设置SPI_InitStruct结构成员函数SPI_StructInit 227

14.2.5 使能或者禁用SPI外设函数SPI_Cmd 227

14.2.6 使能或者禁用SPI中断函数SPI_ITConfig 227

14.2.7 使能或者禁用SPI的DMA请求函数SPI_DMACmd 228

14.2.8 发送数据函数SPI_SendData 228

14.2.9 接收数据函数SPI_ReceiveData 228

14.2.10 配置NSS引脚函数SPI_NSSInternalSoftwareConfig 228

14.2.11 使能或者禁用SPI SS输出函数SPI_SSOutputCmd 229

14.2.12 设置SPI数据大小函数SPI_DataSizeConfig 229

14.2.13 发送CRC值函数SPI_TransmitCRC 229

14.2.14 使能或者禁用CRC值计算函数SPI_CalculateCRC 230

14.2.15 获取CRC寄存器值函数SPI_GetCRC 230

14.2.16 获取CRC多项式寄存器值函数SPI_GetCRCPolynomial 230

14.2.17 双向模式下数据方向函数SPI_BiDirectionalLineConfig 231

14.2.18 获取SPI标志位函数SPI_GetFlagStatus 231

14.2.19 清除挂起标志位函数SPI_ClearFlag 231

14.2.20 获取SPI中断函数SPI_GetITStatus 232

14.2.21 清除中断挂起位函数SPI_ClearITPendingBit 232

14.3 I2C结构 233

14.3.1 I2C从模式工作原理 233

14.3.2 I2C主模式工作原理 234

14.3.3 SMBus功能 234

14.3.4 I2C的DMA功能 235

14.3.5 I2C的中断请求 236

14.4 I2C编程方法 236

14.4.1 I2C寄存器结构 237

14.4.2 复位I2C外设寄存器函数I2C_DeInit 238

14.4.3 初始化I2C外设函数I2C_Init 238

14.4.4 复位I2C_InitStruct结构函数I2C_StructInit 239

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

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

14.4.7 标示最后DMA传输函数I2C_DMALastTransferCmd 240

14.4.8 产生起始信号函数I2C_GenerateSTART 240

14.4.9 产生停止信号函数I2C_GenerateSTOP 241

14.4.10 使能或者禁用应答函数I2C_AcknowledgeConfig 241

14.4.11 配置I2C首地址2函数I2C_OwnAddress2Config 242

14.4.12 使能或者禁用双重地址模式函数I2C_DualAddressCmd 242

14.4.13 使能或者禁用通用调用特性函数I2C_GeneralCallCmd 242

14.4.14 使能或者禁用I2C中断函数I2C_ITConfig 243

14.4.15 发送数据函数I2C_SendData 243

14.4.16 接收数据函数I2C_ReceiveData 243

14.4.17 发送地址字节函数I2C_Send7bitAddress 243

14.4.18 读取I2C寄存器函数I2C_ReadRegister 244

14.4.19 使能或禁用软件复位函数I2C_SoftwareResetCmd 244

14.4.20 配置驱动SMBAlert引脚函数I2C_SMBusAlertConfig 244

14.4.21 使能或者禁用PEC传输函数I2C_TransmitPEC 245

14.4.22 选择PEC位置函数I2C_PECPositionConfig 245

14.4.23 使能或禁用PEC计算值函数I2C_CalculatePEC 245

14.4.24 获取PEC值函数I2C_GetPEC 246

14.4.25 使能或者禁用I2C ARP函数I2C_ARPCmd 246

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

14.4.27 配置占空比函数I2C_FastModeDutyCycleConfig 246

14.4.28 获取最近的I2C事件函数I2C_GetLastEvent 247

14.4.29 检查I2C事件函数I2C_CheckEvent 247

14.4.30 获取I2C标志位函数I2C_GetFlagStatus 248

14.4.31 清除挂起标志函数I2C_ClearFlag 248

14.4.32 获取I2C中断函数I2C_GetITStatus 249

14.4.33 清除中断挂起位函数I2C_ClearITPendingBit 249

14.5 综合练习 250

14.6 小结 252

14.7 习题 252

第15章 通用定时器系统(教学视频:39分钟) 254

15.1 系统计时器(SysTick)及其编程方法 254

15.1.1 SysTick寄存器结构 254

15.1.2 配置SysTick时钟源函数SysTick_CLKSourceConfig 254

15.1.3 设置SysTick重载值函数SysTick_Setreload 255

15.1.4 使能或禁用SysTick计数器函数SysTick_CounterCmd 255

15.1.5 使能或者取消SysTick中断函数SysTick_ITConfig 255

15.1.6 获取SysTick计数器值函数SysTick_GetCounter 256

15.1.7 获取SysTick标志位函数SysTick_GetFlagStatus 256

15.2 通用定时器(TIM)结构 256

15.2.1 时基单元 257

15.2.2 计数器的模式 257

15.2.3 通用定时器的特殊工作模式 258

15.3 通用定时器(TIM)的编程方法 259

15.3.1 TIM寄存器结构 261

15.3.2 复位TIM外设寄存器函数TIM_DeInit 262

15.3.3 初始化TIMx时间基单元函数TIM_TimeBaseInit 262

15.3.4 初始化TIMx外设函数TIM_OCInit函数 263

15.3.5 初始化TIMx外设函数TIM_ICInit 264

15.3.6 初始化TIM_TimeBaseInitStruct结构函数 TIM_TimeBaseStructInit 265

15.3.7 初始化TIM_OCInitStruct结构函数TIM_OCStructInit 265

15.3.8 初始化TIM_ICInitStruct结构函数TIM_ICStructInit 265

15.3.9 使能或者禁用TIM外设函数TIM_Cmd 265

15.3.10 使能或者禁用TIM中断函数TIM_ITConfig 266

15.3.11 配置DMA接口函数TIM_DMAConfig 266

15.3.12 使能或者禁用DMA请求函数TIM_DMACmd 266

15.3.13 配置TIMx内部时钟函数TIM_InternalClockConfig 267

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

15.3.15 配置TIMx触发器为外部时钟函数TIM_TIxExternalConfig 267

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

15.3.17 配置TIMx外部时钟模型2函数 TIM_ETRClockMode2Config 268

15.3.18 配置TIMx外部触发函数TIM_ETRConfig 268

15.3.19 选择TIMx输入触发源函数TIM_SelectInputTrigger 269

15.3.20 设置TIMx预分频函数TIM_PrescalerConfig 269

15.3.21 设置TIMx计数器模式函数TIM_CounterModeConfig 269

15.3.22 设置TIMx输出1函数TIM_ForcedOC1Config 270

15.3.23 设置TIMx输出2函数TIM_ForcedOC2Config 270

15.3.24 设置TIMx输出3函数TIM_ForcedOC3Config 270

15.3.25 设置TIMx输出4函数TIM_ForcedOC4Config 271

15.3.26 使能或禁用ARR上的预装载寄存器函数 TIM_ARRPreloadConfig 271

15.3.27 选择外设捕获比较DMA源函数TIM_SelectCCDMA 271

15.3.28 使能或禁用CCR1上的预装载寄存器函数 TIM_OC1PreloadConfig 272

15.3.29 使能或禁用CCR2上的预装载寄存器函数 TIM_OC2PreloadConfig 272

15.3.30 使能或禁用CCR3上的预装载寄存器函数 TIM_OC3PreloadConfig 272

15.3.31 使能或禁用CCR4上的预装载寄存器函数 TIM_OC4PreloadConfig 273

15.3.32 设置捕获比较1快速特征函数TIM_OC1FastConfig 273

15.3.33 设置捕获比较2快速特征函数TIM_OC2FastConfig 273

15.3.34 设置捕获比较3快速特征函数TIM_OC3FastConfig 274

15.3.35 设置捕获比较4快速特征函数TIM_OC4FastConfig 274

15.3.36 清除或者保持OCREF1信号函数TIM_ClearOC1Ref 274

15.3.37 清除或者保持OCREF2信号函数TIM_ClearOC2Ref 275

15.3.38 清除或者保持OCREF3信号函数TIM_ClearOC3Ref 275

15.3.39 清除或者保持OCREF4信号函数TIM_ClearOC4Ref 275

15.3.40 使能或禁用更新事件函数TIM_UpdateDisableConfig 275

15.3.41 设置TIMx编码界面函数TIM_EncoderInterfaceConfig 276

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

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

15.3.44 设置TIMx通道2极性函数TIM_OC2PolarityConfig 277

15.3.45 设置TIMx通道3极性函数TIM_OC3PolarityConfig 277

15.3.46 设置TIMx通道4极性函数TIM_OC4PolarityConfig 277

15.3.47 设置TIMx更新请求源函数TIM_UpdateRequestConfig 278

15.3.48 使能或禁用霍尔传感器接口函数TIM_SelectHallSensor 278

15.3.49 设置TIM单脉冲模式函数TIM_SelectOnePulseMode 279

15.3.50 选择触发输出模式函数TIM_SelectOutputTrigger 279

15.3.51 选择TIMx从模式函数TIM_SelectSlaveMode 279

15.3.52 设置或者重主/从模式函数TIM_SelectMasterSlaveMode 279

15.3.53 设置TIM计数器寄存器值函数TIM_SetCounter 280

15.3.54 设置TIM自动重装载寄存器值函数TIM_SetAutoreload 280

15.3.55 设置捕获比较1寄存器值函数TIM_SetCompare1 280

15.3.56 设置捕获比较2寄存器值函数TIM_SetCompare2 280

15.3.57 设置捕获比较3寄存器值函数TIM_SetCompare3 281

15.3.58 设置捕获比较4寄存器值函数TIM_SetCompare4 281

15.3.59 设置TIMx输入捕获1预分频函数TIM_SetIC1Prescaler 281

15.3.60 设置TIMx输入捕获2预分频函数TIM_SetIC2Prescaler 281

15.3.61 设置TIMx输入捕获3预分频函数TIM_SetIC3Prescaler 282

15.3.62 设置TIMx输入捕获4预分频函数TIM_SetIC4Prescaler 282

15.3.63 设置TIMx时钟分割值函数TIM_SetClockDivision 282

15.3.64 获取TIMx输入捕获1值函数TIM_GetCapture1 282

15.3.65 获取TIMx输入捕获2值函数TIM_GetCapture2 283

15.3.66 获取TIMx输入捕获3值函数TIM_GetCapture3 283

15.3.67 获取TIMx输入捕获4值函数TIM_GetCapture4 283

15.3.68 获取TIMx计数器值函数TIM_GetCounter 283

15.3.69 获取TIMx预分频值函数TIM_GetPrescaler 283

15.3.70 获取TIM标志位函数TIM_GetFlagStatus 284

15.3.71 清除挂起标志位函数TIM_ClearFlag 284

15.3.72 获取TIM中断函数TIM_GetITStatus 284

15.3.73 清除中断挂起标志位函数TIM_ClearITPendingBit 285

15.4 综合练习 285

15.5 小结 287

15.6 习题 287

第16章 高级控制定时器系统(教学视频:46分钟) 289

16.1 高级控制定时器(TIM1)结构 289

16.1.1 时基单元 289

16.1.2 计数器模式 290

16.1.3 重复向下计数器 291

16.1.4 高级控制定时器的特殊工作模式 291

16.1.5 与霍尔元件的接口 292

16.2 高级控制定时器(TIM1)的编程方法 292

16.2.1 TIM1寄存器结构 295

16.2.2 复位TIM1外设函数TIM1_DeInit 296

16.2.3 初始化TIM1时间基数单位函数TIM1_TIM1BaseInit 296

16.2.4 初始化TIM1通道1函数TIM1_OC1Init 296

16.2.5 初始化TIM1通道2函数TIM1_OC2Init 297

16.2.6 初始化TIM1通道3函数TIM1_OC3Init 297

16.2.7 初始化TIM1通道4函数TIM1_OC4Init 298

16.2.8 设置刹车特性函数TIM1_BDTRConfig 298

16.2.9 初始化外设TIM1函数TIM1_ICInit 299

16.2.10 设置PWM输入模式函数TIM1_PWMIConfig 299

16.2.11 复位TIM1_TIM1BaseInitStruct结构成员函数 TIM1_TIM1BaseStructInit 300

16.2.12 复位TIM1_OCInitStruct结构成员函数TIM1_OCStructInit 301

16.2.13 复位TIM1_ICInitStruct结构成员函数TIM1_ICStructInit 301

16.2.14 复位TIM1_BDTRInitStruct结构成员函数 TIM1_BDTRStructInit 301

16.2.15 使能或者禁用TIM1外设函数TIM1_Cmd 302

16.2.16 使能或禁用TIM1主输出函数TIM1_CtrlPWMOutputs 302

16.2.17 使能或禁用TIM1中断TIM1_ITConfig函数 302

16.2.18 设置DMA接口函数TIM1_DMAConfig 302

16.2.19 使能或禁用DMA请求函数TIM1_DMACmd 303

16.2.20 设置DMA内部时钟函数TIM1_InternalClockConfig 303

16.2.21 配置外部时钟模式1函数TIM1_ETRClockMode1Config 303

16.2.22 配置外部时钟模式2函数TIM1_ETRClockMode2Config 304

16.2.23 配置TIM1外部触发函数TIM1_ETRConfig 304

16.2.24 设置内部触发为外部时钟模式函数 TIM1_ITRxExternalClockConfig 304

16.2.25 设置TIM1触发为外部时钟函数TIM1_TIxExternalClockConfig 304

16.2.26 选择TIM1输入触发源函数TIM1_SelectInputTrigger 305

16.2.27 使能或禁用更新事件函数TIM1_UpdateDisableConfig 305

16.2.28 设置更新请求源函数TIM1_UpdateRequestConfig 305

16.2.29 使能或禁用霍尔传感器接口函数TIM1_SelectHallSensor 306

16.2.30 设置TIM1单脉冲模式函数TIM1_SelectOnePulseMode 306

16.2.31 选择触发输出模式函数TIM1_SelectOutputTrigger 306

16.2.32 选择TIM1从模式函数TIM1_SelectSlaveMode 306

16.2.33 选择TIM1主/从模式函数TIM1_SelectMasterSlaveMode 307

16.2.34 设置TIM1编码界面函数TIM1_EncoderInterfaceConfig 307

16.2.35 设置TIM1预分频器函数TIM1_PrescalerConfig 307

16.2.36 设置TIM1计数器模式函数TIM1_CounterModeConfig 307

16.2.37 设置TIM1输出1电平函数TIM1_ForcedOC1Config 308

16.2.38 设置TIM1输出2电平函数TIM1_ForcedOC2Config 308

16.2.39 设置TIM1输出3电平函数TIM1_ForcedOC3Config 308

16.2.40 设置TIM1输出4电平函数TIM1_ForcedOC4Config 309

16.2.41 使能或禁用预装载寄存器TIM1_ARRPreloadConfig函数 309

16.2.42 选择TIM1外设的通信事件函数TIM1_SelectCOM 309

16.2.43 选择捕获比较DMA源函数TIM1_SelectCCDMA 309

16.2.44 设置或重置捕获比较控制位函数TIM1_CCPreloadControl 310

16.2.45 使能或禁用CCR1上的预装载寄存器函数 TIM1_OC1PreloadConfig 310

16.2.46 使能或禁用CCR2上的预装载寄存器函数 TIM1_OC2PreloadConfig 310

16.2.47 使能或禁用CCR3上的预装载寄存器函数 TIM1_OC3PreloadConfig 310

16.2.48 使能或禁用CCR4上的预装载寄存器函数 TIM1_OC4PreloadConfig 311

16.2.49 设置捕获比较1快速特征函数TIM1_OC1FastConfig 311

16.2.50 设置捕获比较2快速特征函数TIM1_OC2FastConfig 311

16.2.51 设置捕获比较3快速特征函数TIM1_OC3FastConfig 311

16.2.52 设置捕获比较4快速特征函数TIM1_OC4FastConfig 311

16.2.53 清除或保持OCREF1信号函数TIM1_ClearOC1Ref 312

16.2.54 清除或保持OCREF2信号函数TIM1_ClearOC2Ref 312

16.2.55 清除或保持OCREF3信号函数TIM1_ClearOC3Ref 312

16.2.56 清除或保持OCREF4信号函数TIM1_ClearOC4Ref 312

16.2.57 设置事件由软件产生函数TIM1_GenerateEvent 312

16.2.58 设置通道1极性函数TIM1_OC1PolarityConfig 313

16.2.59 设置通道1N极性函数TIM1_OC1NPolarityConfig 313

16.2.60 设置通道2极性函数TIM1_OC2PolarityConfig 313

16.2.61 设置通道2N极性函数TIM1_OC2NPolarityConfig 313

16.2.62 设置通道3极性函数TIM1_OC3PolarityConfig 314

16.2.63 设置通道3N极性函数TIM1_OC3NPolarityConfig 314

16.2.64 设置通道4极性函数TIM1_OC4PolarityConfig 314

16.2.65 设置计数器寄存器值函数TIM1_SetCounter 314

16.2.66 使能或禁用捕获比较通道x函数TIM1_CCxCmd 314

16.2.67 使能或禁用捕获比较通道xN函数TIM1_CCxNCmd 315

16.2.68 选择TIM1输出比较模式函数TIM1_SelectOCxM 315

16.2.69 设置自动重装载寄存器值函数TIM1_SetAutoreload 316

16.2.70 设置捕获比较1寄存器值函数TIM1_SetCompare1 316

16.2.71 设置捕获比较2寄存器值函数TIM1_SetCompare2 316

16.2.72 设置捕获比较3寄存器值函数TIM1_SetCompare3 316

16.2.73 设置捕获比较4寄存器值函数TIM1_SetCompare4 317

16.2.74 设置输入捕获1预分频值函数TIM1_SetIC1Prescaler 317

16.2.75 设置输入捕获2预分频值函数TIM1_SetIC2Prescaler 317

16.2.76 设置输入捕获3预分频值函数TIM1_SetIC3Prescaler 317

16.2.77 设置输入捕获4预分频值函数TIM1_SetIC4Prescaler 318

16.2.78 设置时钟分割值函数TIM1_SetClockDivision 318

16.2.79 获取输入捕获1的值函数TIM1_GetCapture1 318

16.2.80 获取输入捕获2的值函数TIM1_GetCapture2 318

16.2.81 获取输入捕获3的值函数TIM1_GetCapture3 318

16.2.82 获取输入捕获4的值函数TIM1_GetCapture4 319

16.2.83 获取TIM1计数器的值函数TIM1_GetCounter 319

16.2.84 获取TIM1预分频值函数TIM1_GetPrescaler 319

16.2.85 获取TIM1标志位函数TIM1_GetFlagStatus 319

16.2.86 清除TIM1挂起标志位函数TIM1_ClearFlag 319

16.2.87 获取TIM1中断函数TIM1_GetITStatus 320

16.2.88 清除TIM1中断挂起标志位函数TIM1_ClearITPendingBit 320

16.3 综合练习 320

16.4 小结 322

16.5 习题 322

第17章 时钟控制系统(教学视频:43分钟) 324

17.1 复位和时钟控制(RCC) 324

17.1.1 复位的类型 324

17.1.2 时钟的类型 325

17.2 复位和时钟控制(RCC)的编程方法 327

17.2.1 RCC寄存器结构 328

17.2.2 RCC外围设备复位函数RCC_DeInit 328

17.2.3 配置高速振荡器HSE函数RCC_HSEConfig 329

17.2.4 等待HSE完成启动函数RCC_WaitForHSEStartUp 329

17.2.5 校正HIS函数RCC_AdjustHSICalibrationValue 330

17.2.6 使能或禁用HIS函数RCC_HSICmd 330

17.2.7 配置PLL函数RCC_PLLConfig 330

17.2.8 使能或者禁用PLL函数RCC_PLLCmd 331

17.2.9 配置系统时钟函数RCC_SYSCLKConfig 331

17.2.10 获取系统时钟源函数RCC_GetSYSCLKSource 331

17.2.11 配置AHB时钟函数RCC_HCLKConfig 331

17.2.12 配置低速APB时钟函数RCC_PCLK1Config 332

17.2.13 配置高速APB时钟函数RCC_PCLK2Config 332

17.2.14 使能或者禁用RCC中断函数RCC_ITConfig 333

17.2.15 配置USB时钟函数RCC_USBCLKConfig 333

17.2.16 配置ADC时钟函数RCC_ADCCLKConfig 333

17.2.17 配置LSE函数RCC_LSEConfig 334

17.2.18 使能或者禁用LSI函数RCC_LSICmd 334

17.2.19 配置RTC时钟函数RCC_RTCCLKConfig 334

17.2.20 使能或者禁用RTC时钟函数RCC_RTCCLKCmd 335

17.2.21 获取时钟频率函数RCC_GetClocksFreq 335

17.2.22 使能或禁用AHB外围设备时钟函数RCC_AHBPeriphClockCmd 336

17.2.23 使能或者禁用高速APB2外围设备时钟函数RCC_APB2PeriphClockCmd 336

17.2.24 使能或者禁用低速APB1外围设备时钟函数RCC_APB1PeriphClockCmd 337

17.2.25 高速APB2外围设备复位函数RCC_APB2PeriphResetCmd 337

17.2.26 低速APB1外围设备复位函数RCC_APB1PeriphResetCmd 337

17.2.27 备份域复位函数RCC_BackupResetCmd 338

17.2.28 使能或者禁用时钟安全系统函数 17.2.24 RCC_ClockSecuritySystemCmd 338

17.2.29 选择输出时钟源函数RCC_MCOConfig 338

17.2.30 获取RCC标志函数RCC_GetFlagStatus 338

17.2.31 清除RCC复位标志函数RCC_ClearFlag 339

17.2.32 获取RCC中断函数RCC_GetITStatus 340

17.2.33 清除RCC中断挂起位函数RCC_ClearITPendingBit 340

17.3 实时时钟(RTC) 340

17.3.1 RTC的复位 341

17.3.2 读RTC寄存器 341

17.3.3 配置RTC寄存器 341

17.3.4 RTC标志的设置 341

17.4 实时时钟(RTC)的编程方法 342

17.4.1 RTC寄存器结构 342

17.4.2 使能或者禁用RTC中断函数RTC_ITConfig 343

17.4.3 进入RTC配置模式函数RTC_EnterConfigMode 343

17.4.4 跳出RTC配置模式函数RTC_ExitConfigMode 343

17.4.5 获取RTC计数值函数RTC_GetCounter 343

17.4.6 设置RTC计数值函数RTC_SetCounter 344

17.4.7 获取RTC预分频数值函数TC_GetPrescaler 344

17.4.8 设置RTC预分频数值函数RTC_SetPrescaler 344

17.4.9 设置RTC警报值函数RTC_SetAlarm 344

17.4.10 获取RTC分割值函数RTC_GetDivider 344

17.4.11 等待RTC寄存器写完成函数RTC_WaitForLastTask 345

17.4.12 等待同步函数RTC_WaitForSynchro 345

17.4.13 获取RTC标志位函数RTC_GetFlagStatus 345

17.4.14 清除RTC挂起标志位函数RTC_ClearFlag 346

17.4.15 获取RTC中断函数RTC_GetITStatus 346

17.4.16 清除RTC中断挂起位函数RTC_ClearITPendingBit 346

17.5 综合练习 346

17.6 小结 350

17.7 习题 351

第18章 看门狗系统(教学视频:22分钟) 352

18.1 独立看门狗(IWDG)简介 352

18.2 独立看门狗(IWDG)的编程方法 353

18.2.1 IWDG寄存器结构 353

18.2.2 使能或禁用写寄存器函数IWDG_WriteAccessCmd 353

18.2.3 设置IWDG预分频因子函数IWDG_SetPrescaler 354

18.2.4 设置IWDG重载寄存器函数IWDG_SetReload 354

18.2.5 重载IWDG计数器函数IWDG_ReloadCounter 354

18.2.6 使能独立看门狗函数IWDG_Enable 354

18.2.7 获取IWDG标志函数IWDG_GetFlagStatus 355

18.3 窗口看门狗(WWDG)简介 355

18.3.1 窗口看门狗(WWDG)的基本功能 356

18.3.2 编写窗口看门狗(WWDG)超时程序 356

18.4 窗口看门狗(WWDG)的编程方法 356

18.4.1 WWDG寄存器结构 357

18.4.2 复位WWDG外围设备寄存器复位函数WWDG_DeInit 357

18.4.3 设置WWDG预分频因子函数WWDG_SetPrescaler 357

18.4.4 设置窗口值函数WWDG_SetWindowValue 358

18.4.5 使能EWI函数WWDG_EnableIT 358

18.4.6 设置WWDG计数器函数WWDG_SetCounter 358

18.4.7 使能WWDG函数WWDG_Enable 358

18.4.8 获取中断标志位函数WWDG_GetFlagStatus 358

18.4.9 清除中断标志位函数WWDG_ClearFlag 359

18.5 综合练习 359

18.6 小结 363

18.7 习题 363

第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_TamperPinLevelConfig 366

19.2.4 使能或禁用侵入检测引脚函数BKP_TamperPinCmd 366

19.2.5 使能或禁用侵入检测引脚中断函数BKP_ITConfig 366

19.2.6 使能或禁用校准时钟输出函数BKP_RTCCalibrationClockOutputCmd 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 368

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 习题 371

第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 376

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分钟) 385

21.1 电源控制的结构 385

21.2 电源管理器 386

21.2.1 上电复位(POR)和掉电复位(PDR) 386

21.2.2 可编程电压监测器(PVD) 386

21.3 低功耗模式 387

21.3.1 降低系统时钟 387

21.3.2 外部时钟的控制 387

21.3.3 睡眠模式 388

21.3.4 停止模式 389

21.3.5 待机模式 389

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的移植(教学视频:22分钟) 399

22.1 获取FreeRTOS内核 399

22.2 在STM32上移植FreeRTOS 399

22.2.1 宏定义部分 400

22.2.2 C接口部分 400

22.2.3 汇编处理部分 402

22.2.4 创建测试任务 404

22.3 小结 405

22.4 习题 405

第23章 嵌入式系统UC/OS-Ⅱ的移植(教学视频:23分钟) 407

23.1 获取UC/OS-Ⅱ嵌入式系统内核 407

23.2 在STM32上移植UC/OS-Ⅱ 407

23.2.1 移植要求 407

23.2.2 头文件OS_CPU.H 408

23.2.3 C文件OS_CPU_C.C 409

23.2.4 汇编文件OS_CPU_A.ASM 411

23.2.5 测试任务 413

23.3 小结 416

23.4 习题 416

内容摘要:

《21天学通Linux嵌入式开发》系统地介绍了ARM嵌入式系统的基本结构、开发和ARM处理器的编程,并结合流行的嵌入式系统介绍了如何移植。《21天学通Linux嵌入式开发》言简意赅、通俗易懂,知识点覆盖全面,详细讲述了最新的ARM Cortex-M3内核及STM32处理器编程,使读者能够更好地掌握ARM处理器及相应的嵌入式系统设计。
  《21天学通Linux嵌入式开发》分为四篇,共23章,全面详细地讲述了ARM处理器的原理、程序设计方法、ARM处理器编程指南及嵌入式系统移植。首先介绍了ARM处理器的构架及如何搭建一个ARM嵌入式开发平台,接着介绍了ARM Cortex-M3的指令集,基于Cortex-M3的STM32系列芯片及一些典型的嵌入式操作系统。然后结合STM32的各个功能部件详细讲解了ARM处理器的硬件编程方法。最后《21天学通Linux嵌入式开发》还介绍了基于ARM Cortex-M3的STM32芯片如何移植流行的嵌入式操作系统。
  《21天学通Linux嵌入式开发》知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富。ARM嵌入式系统的初学者通过《21天学通Linux嵌入式开发》可以快速掌握程序设计方法。《21天学通Linux嵌入式开发》对具有一定开发经验的设计人员,也有很高的参考价值。
  《21天学通Linux嵌入式开发》附赠DVD光盘1张,内容包括超大容量手把手教学视频、电子教案(PPT)、编程参考宝典电子书、源代码及各章习题答案。

编辑推荐:

15小时多媒体语音视频教学。畅销书新品,以任务驱动讲解,用实例引导读者学习,只需21天,但可轻松掌握嵌入式开发。
  《21天学通Linux嵌入式开发》特色:基础知识一核心技术一典型实例一综合练习一项目案例;453个函数的详细说明、2个项目案例、254个练习题;一线开发人员全程贴心讲解,上手毫不费力。
  超值DVD:15小时多媒体语音视频教学;《21天学通Linux嵌入式开发》源代码+《21天学通Linux嵌入式开发》电子教案(PPT);1000余页编程参考宝典电子书(免费赠送)。
  全面阐述ARM嵌入式开发技术。囊括了方方面面的知识;重点分析了嵌入式系统的移植问题。实用性强;对各个参数进行了全面剖析,可以作为手册随查随用;从原理上进行分析。让读者知道嵌入式系统的执行方法;每章给出了练习题,帮助读者总结和提高:代码注释详细,即使只读代码也能明白其中的含义。
  《21天学通Linux嵌入式开发》适合以下人员阅读:嵌入式开发入门读者,从未接触过ARM开发技术的人员,有一定硬件开发基础。但需要提升的人员,想学习ARM嵌入式编程的人员,其他编程爱好者。
  丛书特色:光盘提供了源代码、大量多媒体视频教学、电子教案及编程电子书;作者均为有多年编程经验的一线程序员或者培训讲师;按“基础知识-核心技术-典型实例-综合练习一项目案例”的模式讲解概念准确、清楚。必要时进行类比,读者很容易理解;提供了大量实例,最后还提供了综合案例。非常实用;对代码进行了丰富的注释,阅读起来没有任何障碍;无论理论知识。还是实例讲解都很详细,很容易掌握。

书籍规格:

书籍详细信息
书名21天学通Linux嵌入式开发站内查询相似图书
丛书名21天学通系列
9787121106217
如需购买下载《21天学通Linux嵌入式开发》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位电子工业出版社
版次1版印次1
定价(元)49.8语种简体中文
尺寸26 × 18装帧平装
页数 420 印数

书籍信息归属:

21天学通Linux嵌入式开发是电子工业出版社于2010.4出版的中图分类号为 TP316.89 ,TP332 的主题关于 Linux操作系统-系统设计 ,微处理器,ARM-系统设计 的书籍。