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

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

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

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

第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嵌入式控制器 100

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

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