《嵌入式系统及其应用 基于Cortex-M3内核和STM32F103系列微控制器的系统设计与开发》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:陈启军,余有灵,张伟等编著
  • 出 版 社:上海:同济大学出版社
  • 出版年份:2011
  • ISBN:9787560845302
  • 页数:493 页
图书介绍:本书介绍了嵌入式系统领域的基本原理、技术和方法,在内容上偏重电器类专业的教材选择需求,更加强调基本原理、强调硬件设计、强调软硬件交互、强调在自动化和电气领域的应用,而在更高层的软件开发上适当弱化,全书以ARM公司的Cortex-M3内核和ST公司的STM32F103系列MCU为主要介绍对象。本书适合专业教育阶段的自动化电气类本科教学,也适合具有初步经验的嵌入式系统开发者自学或研究生学习。

第1章 嵌入式系统导论 1

1.1 嵌入式系统——从部件到系统的集成 1

1.1.1 什么是嵌入式系统 1

1.1.2 嵌入式系统——从部件到系统的集成 2

1.2 计算的基本原理和历史演变 4

1.2.1 计算的概念——从数值计算到通用信息处理和智能计算 4

1.2.2 计算的基本模型:图灵机理论模型 5

1.2.3 计算的发展规律 7

1.3 计算机的基本原理和历史演变 8

1.3.1 计算机的诞生 8

1.3.2 计算机的发展 9

1.3.3 面向嵌入式应用的架构改进 12

1.4 嵌入式系统的历史沿革 14

1.5 ARM,Cortex和STM32简介 15

1.5.1 ARM系列内核 15

1.5.2 Cortex系列内核 19

1.5.3 STM32F103系列微控制器 20

1.6 嵌入式系统工程设计与开发 23

1.6.1 需求分析 23

1.6.2 架构和概要设计 24

1.6.3 详细设计与开发 25

1.6.4 测试反馈 25

1.7 本课程学习内容和目标 26

习题 26

第2章 Cortex-M3微处理器 27

2.1 Cortex-M3微处理器内核 27

2.1.1 内核体系结构 28

2.1.2 系统总线结构 30

2.1.3 寄存器 32

2.1.4 存储器管理 37

2.1.5 工作模式 49

2.1.6 异常与中断 51

2.1.7 堆栈 65

2.1.8 CoreSight调试与跟踪系统 68

2.1.9 Cortex-M3内核的其他特性 70

2.2 指令系统 73

2.2.1 Thumb-2指令分类 75

2.2.2 统一汇编语言 76

2.2.3 16-bit Thumb-2指令集编码格式 77

2.2.4 32-bit Thumb-2指令集编码格式 83

2.2.5 条件执行 94

2.2.6 未定义及不可预测指令 96

2.2.7 寄存器域编码0b1111的用途 97

2.2.8 寄存器域编码0b1101的用途 98

2.2.9 Cortex-M3常用的Thumb-2指令 99

2.2.10 Thumb-2指令与ARM体系架构下的指令比较 114

2.2.11 基于Cortex-M3的Thumb-2指令集 118

习题 129

第3章 STM32F103基础及最小系统设计 130

3.1 从Cortex-M3到STM32F103 130

3.1.1 微处理器、微控制器和系统 130

3.1.2 STM32F103微控制器 131

3.2 存储器与总线架构 139

3.2.1 存储子系统基本构架 139

3.2.2 存储器映像 140

3.2.3 位带绑定(Bit-Banding) 144

3.2.4 嵌入式闪存 145

3.2.5 寄存器说明 155

3.2.6 启动配置 158

3.2.7 应用实例 159

3.3 中断和事件 161

3.3.1 嵌套向量中断控制器(NVIC)及其特性 162

3.3.2 外部中断/事件控制器(EXTI) 164

3.3.3 中断寄存器描述 166

3.3.4 应用实例 169

3.4 STM32F103x的时钟系统 173

3.5 基于STM32的最小系统参考设计 174

习题 178

第4章 DMA控制器 179

4.1 主要特性 179

4.2 功能描述 180

4.2.1 DMA处理 182

4.2.2 仲裁器 182

4.2.3 DMA通道 183

4.2.4 可编程的数据传输宽度、对齐方式和数据大小端 185

4.2.5 错误管理 187

4.2.6 DMA请求映像 187

4.3 DMA寄存器 188

4.4 DMA应用实例 192

习题 197

第5章 通用和复用功能I/O 198

5.1 GPIO功能描述 198

5.1.1 通用目标I/O(GPIO) 200

5.1.2 原子位设置或位清除 200

5.1.3 外部中断/唤醒线 200

5.1.4 复用功能(AF) 200

5.1.5 I/O复用功能的软件重新映射 201

5.1.6 GPIO锁定机制 201

5.1.7 输入配置与输出配置 201

5.1.8 复用功能配置 203

5.1.9 模拟输入配置 204

5.2 GPIO寄存器描述 205

5.3 复用功能I/O和调试配置(AFIO) 207

5.3.1 引脚功能选择 207

5.3.2 BXCAN复用功能重映射 207

5.3.3 JTAG/SWD复用功能重映射 208

5.3.4 定时器复用功能重映射 209

5.3.5 USART复用功能重映射 210

5.3.6 I2C复用功能重映射 211

5.3.7 SPI复用功能重映射 211

5.4 AFIO寄存器描述 211

5.5 GPIO和AFIO寄存器地址映像 214

5.5.1 GPIO寄存器地址映像 214

5.5.2 AFIO寄存器地址映像 215

5.6 应用实例 215

习题 217

第6章 STM32高级定时器原理与应用 218

6.1 定时/计数器的基本原理与实现方法 218

6.1.1 完全硬件实现 218

6.1.2 纯软件方式 219

6.1.3 微控制器中的可编程定时/计数器 219

6.2 STM32高级定时/计数器 220

6.2.1 STM32高级定时器的主要特点 220

6.2.2 高级定时器概述 221

6.3 STM32高级定时器寄存器描述 222

6.4 STM32高级定时器工作原理及应用 239

6.4.1 定时器的时基信号 239

6.4.2 重复计数器 245

6.4.3 定时器定时应用实例 246

6.4.4 输入捕获 247

6.4.5 输出比较模式 248

6.4.6 STM32高级定时器捕获/比较应用实例 252

6.4.7 STM32高级定时器触发工作模式 256

习题 258

第7章 STM32的USART模块 259

7.1 串行通信概述 259

7.2 串行通信的基本原理 259

7.2.1 USART的扩展——RS232C接口和标准 259

7.2.2 RS232C的连接 261

7.2.3 流控和握手 262

7.2.4 分帧和组帧 263

7.2.5 错误检测和CRC校验 263

7.2.6 RS485 264

7.3 STM32F103的串行通信模块 264

7.3.1 基本结构和连接 265

7.3.2 单字节传输 266

7.3.3 分频设置和波特率选择 267

7.3.4 基于RTS和CTS硬件握手协议的流控过程 268

7.3.5 常用全双工异步通信的发送配置 270

7.3.6 全双工异步通信的接收配置 271

7.3.7 关于传输错误 272

7.3.8 多处理器通信 273

7.3.9 校验控制 273

7.3.10 LIN模式 273

7.3.11 USART同步模式 273

7.3.12 单线半双工通信 274

7.3.13 智能卡 274

7.3.14 IrDA SIR ENDEC功能块 275

7.3.15 利用DMA实现连续通信 276

7.3.16 中断请求 277

7.4 USART寄存器描述 278

7.5 USART应用实例分析 286

习题 289

第8章 STM32的SPI模块 290

8.1 串行外设接口概述 290

8.2 串行外设接口SPI的基本原理 291

8.2.1 主从式连接架构 291

8.2.2 接口信号线介绍 292

8.2.3 数据传输的时序模式 293

8.2.4 多个从机的连接 294

8.3 STM32F103的串行外设接口模块 294

8.3.1 基本结构和连接 295

8.3.2 时钟信号的相位和极性 296

8.3.3 数据帧格式 297

8.3.4 SPI从模式 297

8.3.5 SPI主模式 298

8.3.6 状态标志 299

8.3.7 CRC计算 299

8.3.8 利用DMA的SPI通信 300

8.3.9 错误标志 300

8.3.10 中断 301

8.4 SPI寄存器描述 301

8.5 SPI应用实例分析 306

习题 311

第9章 I2C总线原理及其应用 312

9.1 I2C总线概述 312

9.1.1 I2C总线特点 312

9.1.2 I2C总线标准的发展历史 313

9.1.3 I2C总线术语 313

9.2 I2C总线原理 314

9.2.1 I2C硬件构成 314

9.2.2 位传输 315

9.2.3 数据传输格式 316

9.3 STM32 I2C模块原理 319

9.3.1 STM32 I2C模块特点 319

9.3.2 I2C寄存器描述 320

9.3.3 STM32 I2C模块的通信实现 330

9.4 STM32 I2C扩展EEPROM应用 335

9.4.1 概述 336

9.4.2 管脚描述 336

9.4.3 串行EEPROM芯片的寻址 336

9.4.4 写操作方式 337

9.4.5 读操作方式 338

9.4.6 STM32 I2C模块扩展24C64应用 339

习题 345

第10章 CAN总线原理及其应用 346

10.1 CAN总线概述 346

10.1.1 CAN总线通信概述 346

10.1.2 CAN报文传输 348

10.2 STM32的CAN通信模块 350

10.2.1 STM32 bxCAN通信模块概述 350

10.2.2 控制寄存器描述 351

10.2.3 邮箱寄存器描述 359

10.2.4 CAN过滤器寄存器 363

10.3 STM32 bxCAN模块工作过程 364

10.3.1 bxCAN模块工作模式 364

10.3.2 bxCAN模块数据发送管理 365

10.3.3 bxCAN模块数据接收管理 367

10.3.4 bxCAN模块标识符过滤器 368

10.3.5 bxCAN模块出错管理 370

10.3.6 bxCAN模块位时间特性 370

10.3.7 bxCAN通信与出错中断管理 371

10.4 STM32 CAN应用实例 373

10.4.1 CAN总线硬件设计 373

10.4.2 STM32 CAN通信软件示例 373

习题 378

第11章 STM32的模拟数字转换模块 379

11.1 A/D变换的基本原理 379

11.1.1 采样 380

11.1.2 量化 380

11.1.3 编码 381

11.2 ADC模块的主要技术指标和选型考虑 383

11.2.1 位数 383

11.2.2 采样速率 383

11.2.3 分辨率 383

11.2.4 量化误差 384

11.2.5 绝对精度 385

11.2.6 相对精度 385

11.2.7 偏移误差 385

11.2.8 增益误差 385

11.2.9 AD线性误差 386

11.2.10 微分非线性 387

11.2.11 积分非线性 387

11.2.12 输入失调电压 388

11.2.13 输入失调电流 388

11.2.14 输入阻抗 388

11.2.15 增益带宽积GBP 389

11.2.16 运放的单位增益带宽 389

11.2.17 运放建立时间 389

11.2.18 压摆率 390

11.3 ADC模块的外围软硬件设计 390

11.3.1 电压测量与峰值测量 391

11.3.2 单路测量与多路测量 391

11.3.3 异步测量和同步测量 391

11.3.4 关于电压基准 391

11.3.5 查询式A/D 392

11.3.6 中断式A/D 393

11.3.7 Timer驱动的周期采样 393

11.3.8 外部触发式启动A/D 394

11.3.9 同步A/D 395

11.3.10 DMA数据传输 395

11.3.11 STM32F103的A/D变换模块 395

11.4 STM32F103 ADC寄存器介绍 397

11.5 STM32F103的ADC模块的使用 405

11.5.1 ADC的使能 405

11.5.2 ADC时钟 405

11.5.3 通道选择 405

11.5.4 转换模式 406

11.5.5 模拟看门狗 406

11.5.6 扫描模式 407

11.5.7 注入通道管理 407

11.5.8 间断模式 408

11.5.9 校准 408

11.5.10 数据对齐 408

11.5.11 可编程的通道采样时间 409

11.5.12 外部触发转换 409

11.5.13 DMA请求 410

11.5.14 双ADC模式 410

11.5.15 温度传感器/VREFINT内部通道 413

11.5.16 中断 414

11.6 基于STM32F103的A/D变换示例 414

习题 417

第12章 STM32支撑开发环境 418

12.1 嵌入式系统开发的流程 418

12.1.1 嵌入式项目的生命周期 418

12.1.2 嵌入式软件的开发环节 419

12.1.3 交叉编译与软件调试 419

12.2 基于Keil MDK的STM32开发支撑环境 421

12.2.1 ARM开发工具 421

12.2.2 基于Keil MDK的STM32开发环境 422

12.2.3 开发环境硬件连接 423

12.2.4 基于Keil的软件开发流程 423

12.3 STM32启动文件解析 433

12.4 ARTX嵌入式操作系统使用初步 440

12.5 嵌入式系统软件开发的高级主题 442

12.5.1 形式化规范与证实技术 442

12.5.2 设计架构与模式 442

12.5.3 低功耗软件设计 444

习题 444

第13章 基于STM32的多功能综合实验板设计 445

13.1 综合实验板介绍 445

13.2 MDVSTM32-107实验板模块设计 446

13.2.1 电源电路设计 446

13.2.2 通用I/O口电路设计 447

13.2.3 基于I2C总线扩展 447

13.2.4 CAN总线扩展 449

13.2.5 USB总线扩展 450

13.2.6 智能卡接口电路 450

13.2.7 I2S扩展音频电路 450

13.2.8 RS232扩展和IrDA扩展 453

13.2.9 SD卡扩展电路 453

13.2.10 TFT液晶扩展电路 453

13.2.11 电机扩展接口 454

13.2.12 以太网扩展 457

13.2.13 AD电路扩展 457

13.2.14 MCU电路设计 457

13.2.15 调试电路设计 458

13.2.16 扩展接口 460

习题 462

第14章 基于STM32的电动自行车控制器设计 463

14.1 直流无刷电机的基本原理 463

14.1.1 直流无刷电机结构 463

14.1.2 直流无刷电机工作原理 464

14.2 直流无刷电机应用系统设计 467

14.2.1 硬件电路实现 469

14.2.2 软件电路实现 474

习题 477

第15章 AMR单相电能表的参考设计 478

15.1 需求和目标系统特性 478

15.2 硬件设计方案 479

15.2.1 层次化硬件架构和接口设计 479

15.2.2 测量电路 479

15.2.3 MCU和外设电路 480

15.2.4 供电电路 481

15.2.5 磁保持继电器 482

15.3 STPM10测量集成芯片 482

15.3.1 STPM10测量芯片介绍 482

15.3.2 STPM10与MCU的接口 482

15.3.3 使用DMA的SPI读过程 486

15.3.4 STPM10校准 486

15.4 账户管理 487

15.5 目标机的测试与评估 488

15.5.1 目标机 488

15.5.2 AMR的评估 489

习题 490

附件A ARM公司系列产品命名规则 491

主要参考文献 493