图书介绍

嵌入式系统原理及应用 基于ARM Cortex-M3内核的STM32F103系列微控制器pdf电子书版本下载

嵌入式系统原理及应用  基于ARM Cortex-M3内核的STM32F103系列微控制器
  • 王益涵,孙宪坤,史志才编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302441359
  • 出版时间:2016
  • 标注页数:596页
  • 文件大小:233MB
  • 文件页数:616页
  • 主题词:单片微型计算机-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快] 温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页 直链下载[便捷但速度慢]   [在线试读本书]   [在线获取解压码]

下载说明

嵌入式系统原理及应用 基于ARM Cortex-M3内核的STM32F103系列微控制器PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1篇 系统篇 3

第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

习题1 34

第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

习题2 78

第2篇 内 核篇 81

第3章 ARM Cortex-M3处理器 81

3.1 ARM Cortex-M3组成结构 81

3.1.1 Cortex-M3内核 82

3.1.2 调试系统 84

3.2 ARM Cortex-M3总线接口 86

3.2.1 Cortex-M3总线接口类型 87

3.2.2 Cortex-M3总线连接方案 88

3.3 ARM Cortex-M3编程模型 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.4 ARM Cortex-M3存储器系统 107

3.4.1 存储器映射 107

3.4.2 位带操作 110

3.4.3 存储格式 112

3.5 ARM Cortex-M3的低功耗模式 113

3.6 本章小结 114

习题3 115

第4章 基于ARM Cortex-M3的STM32微控制器 117

4.1 从Cortex-M3到基于Cortex-M3的MCU 117

4.2 基于Cortex-M3的STM32系列微控制器概述 118

4.2.1 产品线 118

4.2.2 命名规则 124

4.2.3 生态系统 125

4.2.4 开发方法 131

4.2.5 学习之路 134

4.3 STM32F103微控制器基础 136

4.3.1 概述 136

4.3.2 主系统结构 137

4.3.3 功能模块 139

4.3.4 引脚定义 140

4.3.5 存储器组织 141

4.4 STM32F103微控制器的最小系统 145

4.4.1 电源电路 145

4.4.2 时钟电路 148

4.4.3 复位电路 149

4.4.4 调试和下载电路 150

4.4.5 其他 151

4.5 STM32F103微控制器的时钟系统 153

4.5.1 输入时钟 153

4.5.2 系统时钟 155

4.5.3 由系统时钟分频得到的其他时钟 155

4.5.4 STM32F10x时钟系统相关库函数 157

4.6 STM32F103微控制器的低功耗模式 162

4.6.1 睡眠模式 163

4.6.2 停机模式 163

4.6.3 待机模式 164

4.7 STM32F103微控制器的安全特性 165

4.7.1 看门狗 165

4.7.2 电源检测 166

4.7.3 时钟安全系统 166

4.8 STM32F103微控制器的启动过程 167

4.8.1 启动过程和启动代码概述 167

4.8.2 ARM启动代码所需汇编语言基础 167

4.8.3 STM32F103的启动代码分析 171

4.8.4 STM32F103的启动过程分析 182

4.9 建立第一个STM32F103应用工程 185

4.9.1 STM32F10x标准外设库的下载和认知 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

习题4 217

第3篇 片内外设篇 221

第5章 GPIO 221

5.1 GPIO概述 221

5.2 STM32F103的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.3 STM32F10x的GPIO相关库函数 228

5.3.1 GPIO_DeInit 229

5.3.2 GPIO_Init 229

5.3.3 GPIO_SetBits 231

5.3.4 GPIO_ResetBits 231

5.3.5 GPIO_Write 232

5.3.6 GPIO_ReadOutputDataBit 232

5.3.7 GPIO_Read OutputData 232

5.3.8 GPIO_ReadInputDataBit 233

5.3.9 GPIO_ReadInputData 233

5.3.10 GPIO_EXTILineConfig 233

5.3.11 GPIO_PinRemapConfig 234

5.4 STM32F103的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.5 STM32F103的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的GPIO 246

5.6 本章小结 247

习题5 248

第6章 定时器 249

6.1 定时器概述 249

6.1.1 延时的实现 249

6.1.2 可编程定时/计数器功能概述 251

6.2 STM32F103的定时器概述 252

6.3 STM32F103的基本定时器TIM6和TIM7 252

6.3.1 内部结构 253

6.3.2 时钟源 253

6.3.3 计数模式 254

6.3.4 主要特性 254

6.4 STM32F103的通用定时器TIM2—TIM5 254

6.4.1 内部结构 254

6.4.2 时钟源 256

6.4.3 计数模式 257

6.4.4 输出比较模式 259

6.4.5 PWM输出模式 259

6.4.6 输入捕获模式 262

6.4.7 PWM输入模式 262

6.4.8 单脉冲模式 263

6.4.9 编码器接口 263

6.4.10 主要特性 263

6.5 STM32F103的高级定时器TIM1和TIM8 264

6.5.1 内部结构 264

6.5.2 时钟源 264

6.5.3 功能描述 266

6.5.4 主要特性 266

6.6 STM32F10x定时器相关库函数 266

6.6.1 TIM_DeInit 267

6.6.2 TIM_TimeBaseInit 268

6.6.3 TIM_OC1Init 269

6.6.4 TIM_OC2Init 270

6.6.5 TIM_OC3Init 271

6.6.6 TIM_OC4Init 271

6.6.7 TIM_OC1PreloadConfig 272

6.6.8 TIM_OC2PreloadConfig 272

6.6.9 TIM_OC3PreloadConfig 272

6.6.10 TIM_OC4PreloadConfig 273

6.6.11 TIM_ARRPreloadConfig 273

6.6.12 TIM_CtrlPWMOutputs 274

6.6.13 TIM_Cmd 274

6.6.14 TIM_GetFlagStatus 275

6.6.15 TIM_ClearFlag 275

6.6.16 TIM_ITConfig 276

6.6.17 TIM_GetITStatus 276

6.6.18 TIM_ClearITPendingBit 277

6.7 STM32F103定时器开发实例——精确定时的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.8 STM32F103定时器开发实例——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

习题6 292

第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.2 STM32F103中断系统 298

7.2.1 嵌套向量中断控制器NVIC 298

7.2.2 STM32F103中断优先级 299

7.2.3 STM32F103中断向量表 300

7.2.4 STM32F103中断服务函数 303

7.2.5 STM32F103中断设置过程 304

7.3 STM32F103外部中断/事件控制器EXTI 306

7.3.1 内部结构 307

7.3.2 工作原理 308

7.3.3 主要特性 309

7.4 STM32F10x的NVIC相关库函数 309

7.4.1 NVIC_PriorityGroupConfig 310

7.4.2 NVIC_Init 310

7.4.3 NVIC_DeInit 313

7.5 STM32F10x的EXTI相关库函数 314

7.5.1 EXTI_DeInit 314

7.5.2 EXTI_Init 314

7.5.3 EXTI_GetFlagStatus 316

7.5.4 EXTI_ClearFlag 316

7.5.5 EXTI_GetITStatus 317

7.5.6 EXTI_ClearITPendingBit 317

7.6 STM32F103的中断开发实例——按键控制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.7 STM32F103的中断开发实例——精确延时的LED闪烁 325

7.7.1 功能要求 325

7.7.2 硬件设计 325

7.7.3 软件流程设计 326

7.7.4 软件代码实现 328

7.7.5 软件代码分析——volatile 331

7.7.6 软件模拟仿真 332

7.7.7 下载到硬件运行 334

7.7.8 开发经验小结——改进的前/后台嵌入式软件架构 334

7.8 本章小结 336

习题7 336

第8章 DMA 337

8.1 DMA的基本概念 337

8.1.1 DMA的引入 337

8.1.2 DMA的定义 338

8.1.3 DMA传输要素 338

8.1.4 DMA传输过程 338

8.1.5 DMA的特点与应用 339

8.2 STM32F103的DMA工作原理 339

8.2.1 功能框图 340

8.2.2 触发通道 341

8.2.3 优先级 344

8.2.4 传输模式 344

8.2.5 主要特性 344

8.3 STM32F10x的DMA相关库函数 345

8.3.1 DMA_DeInit 346

8.3.2 DMA_Init 346

8.3.3 DMA_GetCurrDataCounter 348

8.3.4 DMA_Cmd 348

8.3.5 DMA_GetFlagStatus 349

8.3.6 DMA_ClearFlag 350

8.3.7 DMA_ITConfig 351

8.3.8 DMA_GetITStatus 351

8.3.9 DMA_ClearITPendingBit 353

8.4 STM32F103的DMA开发实例——存储器间的数据传输 353

8.4.1 功能要求 353

8.4.2 硬件设计 353

8.4.3 软件流程设计 354

8.4.4 软件代码实现 355

8.4.5 软件代码分析——const 358

8.4.6 下载硬件调试 358

8.4.7 开发经验小结——使用DMA 365

8.5 本章小结 366

习题8 366

第9章 ADC 367

9.1 ADC概述 367

9.1.1 ADC的由来 367

9.1.2 ADC的基本原理 368

9.1.3 ADC的性能参数 370

9.1.4 ADC的主要类型 371

9.2 STM32F103的ADC工作原理 372

9.2.1 主要特性 373

9.2.2 内部结构 373

9.2.3 ADC通道及分组 375

9.2.4 ADC触发转换 376

9.2.5 ADC时钟和转换时间 377

9.2.6 ADC工作过程 378

9.2.7 ADC中断和DMA请求 378

9.2.8 独立模式和双ADC模式 380

9.2.9 单次和连续转换模式 380

9.2.10 扫描模式 381

9.2.11 间断模式 383

9.2.12 校准 384

9.3 STM32F10x的ADC相关库函数 384

9.3.1 ADC_DeInit 386

9.3.2 ADC_Init 386

9.3.3 ADC_RegularChannelConfig 388

9.3.4 ADC_InjectedChannelConfig 390

9.3.5 ADC_InjectedSequencerLengthConfig 390

9.3.6 ADC_SetInjectedOffset 391

9.3.7 ADC_TampSensorVrefintCmd 391

9.3.8 ADC_Cmd 392

9.3.9 ADC_ResetCalibration 392

9.3.10 ADC_GetResetCalibrationStatus 392

9.3.11 ADC_StartCalibration 393

9.3.12 ADC_GetCalibrationStatus 393

9.3.13 ADC_SoftwareStartConvCmd 394

9.3.14 ADC_ExternalTrigConvCmd 394

9.3.15 ADC_SoftwareStartInjectedConvCmd 395

9.3.16 ADC_ExternalTrigInjectedConvCmd 395

9.3.17 ADC_ExternalTrigInjectedConvConfig 396

9.3.18 ADC_AutoInjectedConvCmd 397

9.3.19 ADC DiscModeCmd 397

9.3.20 ADC_DiscModeChannelCountConfig 398

9.3.21 ADC_ Inj ectedDiscModeCmd 398

9.3.22 ADC GetConversionValue 398

9.3.23 ADC_GetInjectedConversionValue 399

9.3.24 ADC_GetFlagStatus 399

9.3.25 ADC_ClearFlag 400

9.3.26 ADC_ITConfig 400

9.3.27 ADC GetITStatus 401

9.3.28 ADC_ClearITPendingBit 401

9.3.29 ADC DMACmd 402

9.4 STM32F103的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.5 STM32F103的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 开发经验小结——轮询、中断和DMA 422

9.6 本章小结 423

习题9 423

第10章 UART 425

10.1 数据通信的基本概念 426

10.1.1 并行和串行 426

10.1.2 单工、半双工和全双工 426

10.1.3 同步和异步 426

10.2 UART通信原理 427

10.2.1 UART的物理层 427

10.2.2 UART的协议层 430

10.3 STM32F103的USART工作原理 432

10.3.1 主要特性 432

10.3.2 内部结构 432

10.3.3 USART中断 435

10.3.4 使用DMA进行USART通信 436

10.4 STM32F10x的USART相关库函数 437

10.4.1 USART DeInit 438

10.4.2 USART Init 438

10.4.3 USART Cmd 439

10.4.4 USART SendData 440

10.4.5 USART ReceiveData 440

10.4.6 USART_GetFlagStatus 441

10.4.7 USART_ClearFlag 441

10.4.8 USART_ITConfig 442

10.4.9 USART GetITStatus 443

10.4.10 USART_ ClearITPendingBit 444

10.4.11 USART DMACmd 444

10.5 STM32F103的USART开发实例——重定向printf 445

10.5.1 功能要求 445

10.5.2 硬件设计 445

10.5.3 软件流程设计 446

10.5.4 软件代码实现 447

10.5.5 下载到硬件运行 449

10.5.6 开发经验小结——使用printf重定向到USART1 451

10.6 STM32F103的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

习题10 459

第11章 SPI 461

11.1 SPI通信原理 461

11.1.1 SPI的物理层 462

11.1.2 SPI的协议层 464

11.2 STM32F103的SPI工作原理 469

11.2.1 主要特性 469

11.2.2 内部结构 470

11.2.3 SPI主模式 471

11.2.4 SPI从模式 472

11.2.5 SPI状态标志和中断 473

11.2.6 SPI发送数据和接收数据 474

11.2.7 使用DMA进行SPI通信 475

11.3 STM32F10x的SPI相关库函数 476

11.3.1 SPI_ I2S_ DeInit 477

11.3.2 SPI_ Init 477

11.3.3 SPI_ Cmd 479

11.3.4 SPI_ I2S_ SendData 479

11.3.5 SPI_ I2S_ ReceiveData 480

11.3.6 SPI_I2S_GetFlagStatus 480

11.3.7 SPI_I2S_ClearFlag 481

11.3.8 SPI_I2S_ITConfig 481

11.3.9 SPI_I2S_GetITStatus 482

11.3.10 SPI_I2S_ClearITPendingBit 483

11.3.11 SPI_I2S_DMACmd 483

11.4 STM32F103的SPI开发实例——读写SPI_FLASH 484

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

习题11 524

第12章 I2C 526

12.1 I2C通信原理 526

12.1.1 I2C的物理层 527

12.1.2 I2C的协议层 529

12.2 STM32F103的I2C工作原理 533

12.2.1 主要特性 534

12.2.2 内部结构 534

12.2.3 I2C从模式 535

12.2.4 I2C主模式 537

12.2.5 I2C中断 540

12.2.6 使用DMA进行I2C通信 540

12.3 STM32F10x的I2C相关库函数 542

12.3.1 I2C_DeInit 543

12.3.2 I2C_Init 543

12.3.3 I2C_Cmd 545

12.3.4 I2C_GenerateSTART 545

12.3.5 I2C_ReadRegister 545

12.3.6 I2C_Send7bitAddress 546

12.3.7 I2C_SendData 546

12.3.8 I2C_ReceiveData 547

12.3.9 I2C_CheckEvent 547

12.3.10 I2C_AcknowledgeConfig 548

12.3.11 I2C_GenerateSTOP 548

12.3.12 I2C_GetFlagStatus 549

12.3.13 I2C_ClearFlag 550

12.3.14 I2C_ITConfig 551

12.3.15 I2C_GetITStatus 551

12.3.16 I2C_ClearITPendingBit 552

12.3.17 I2C_DMACmd 552

12.4 STM32F103的I2C开发实例——读写I2C_EEPROM 553

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

习题12 580

附录A ASCII码表 581

附录B STM32F103微控制器大容量产品系列引脚定义表 583

附录C STM32F103微控制器中等容量产品系列引脚定义表 589

精品推荐