第1章 嵌入式系统与微控制器 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统的发展与应用 2
1.1.2 嵌入式系统的特点 4
1.1.3 嵌入式系统的组成 4
1.1.4 嵌入式系统的种类 6
1.1.5 嵌入式系统的调试方法 7
1.2 MCU概述 11
1.2.1 MCU的发展历史 11
1.2.2 MCU的特点 13
1.3 ARMCortex-M4处理器简介 13
1.3.1 ARM处理器架构 13
1.3.2 Cortex-M4处理器 14
1.4 Tiva系列MCU 16
1.4.1 TM4C123系列 16
1.4.2 TM4C129系列 17
1.5 TM4C123GH6PM引脚与电气特性 18
1.5.1 GPIO引脚功能选择 19
1.5.2 TM4C123GH6PM电气特性 21
思考题与习题 26
第2章 系统控制 27
2.1 功能描述 27
2.1.1 器件标识 27
2.1.2 复位控制 27
2.1.3 电源控制 32
2.1.4 时钟控制 33
2.1.5 非屏蔽中断 40
2.1.6 低功耗模式控制 41
2.2 初始化及配置 46
2.3 操作示例 47
2.3.1 程序流程图 47
2.3.2 库函数说明 47
2.3.3 示例代码 49
2.3.4 操作现象 50
思考题与习题 50
第3章 存储器 52
3.1 存储器简介 52
3.1.1 SRAM 53
3.1.2 DRAM 55
3.1.3 ROM 56
3.1.4 Flash 56
3.1.5 EEPROM 58
3.1.6 存储器扩展 58
3.1.7 地址译码 60
3.2 存储器空间映射 62
3.2.1 普林斯顿结构 62
3.2.2 哈佛结构 63
3.2.3 大小端模式 64
3.3 Tiva微控制器存储器 65
3.3.1 TM4C123GH6PM存储器地址映射 66
3.3.2 TM4C123GH6PM的ROM 66
3.3.3 TM4C123GH6PM的Flash 66
3.3.4 EEPROM 68
3.4 操作示例 71
3.4.1 程序流程图 71
3.4.2 库函数说明 71
3.4.3 示例代码 73
3.4.4 操作现象 74
思考题与习题 75
第4章 基本接口与外设 77
4.1 通用输入/输出(GPIO) 77
4.1.1 GPIO简介 77
4.1.2 Tiva微控制器GPIO 81
4.1.3 数据控制 86
4.1.4 中断控制 87
4.1.5 初始化及配置 88
4.1.6 操作示例 91
4.2 通用定时器(Timer) 102
4.2.1 定时器简介 103
4.2.2 Tiva微控制器定时器 103
4.2.3 初始化及配置 121
4.2.4 操作示例 124
4.3 脉冲宽度调节器(PWM) 129
4.3.1 PWM简介 129
4.3.2 Tiva微控制器PWM 130
4.3.3 初始化及配置 140
4.3.4 操作示例 141
4.4 看门狗定时器(WDT) 146
4.4.1 WDT简介 146
4.4.2 Tiva微控制器WDT 147
4.4.3 初始化及配置 149
4.4.4 操作示例 150
4.5 微型直接内存访问(μDMA) 155
4.5.1 DMA传输数据过程 155
4.5.2 Tiva微控制器μDMA介绍 156
4.5.3 初始化及配置 170
4.5.4 操作示例 176
4.6 休眠控制与RTC 190
4.6.1 休眠模块简介 191
4.6.2 Tiva微控制器休眠模块与RTC 191
4.6.3 初始化及配置 200
4.6.4 操作示例 203
思考题与习题 207
第5章 通信接口与外设 208
5.1 基本概念 208
5.2 异步串行通信接口(UART) 209
5.2.1 UART简介 209
5.2.2 Tiva微控制器的UART 216
5.2.3 初始化及配置 225
5.2.4 操作示例 226
5.3 同步串行接口(SSI) 230
5.3.1 SSI简介 230
5.3.2 数据传输 230
5.3.3 极性、相位和帧格式 231
5.3.4 Tiva微控制器的SSI 234
5.3.5 初始化及配置 237
5.3.6 操作示例 237
5.4 I2C接口 242
5.4.1 I2C简介 242
5.4.2 Tiva微控制器的I2C 254
5.4.3 初始化及配置 258
5.4.4 操作示例 259
5.5 CAN模块 268
5.5.1 CAN简介 268
5.5.2 Tiva微控制器的CAN 270
5.6 USB控制器 287
5.6.1 USB简介 288
5.6.2 Tiva微控制器的USB 290
思考题与习题 311
第6章 模拟外设 313
6.1 模/数转换器(ADC) 313
6.1.1 ADC简介 313
6.1.2 Tiva微控制器的ADC 315
6.1.3 数据比较器单元 326
6.1.4 初始化及配置 329
6.1.5 操作示例 331
6.2 模拟比较器(AC) 337
6.2.1 AC简介 337
6.2.2 Tiva微控制器的AC 338
6.2.3 初始化及配置 343
6.2.4 操作示例 343
6.3 数/模转换器(DAC) 347
6.3.1 DAC7512的基本原理与特点 348
6.3.2 DAC工作模式 349
6.4 正交编码器(QEI) 350
6.4.1 Tiva微控制器的QEI 350
6.4.2 中断控制 355
6.4.3 初始化及配置 355
思考题与习题 355
第7章 嵌入式软件设计 357
7.1 嵌入式C语言基础 357
7.1.1 嵌入式C语言程序设计 357
7.1.2 编程风格 359
7.1.3 数据类型及声明 369
7.1.4 操作符与表达式 375
7.2 嵌入式系统软件组成 378
7.2.1 裸机嵌入式系统软件 378
7.2.2 初始化引导程序 379
7.2.3 设备驱动程序 379
7.2.4 库函数 380
7.3 嵌入式系统软件设计方法 380
7.3.1 前后台系统 380
7.3.2 中断(事件)驱动系统 381
7.3.3 巡回服务系统 382
7.3.4 基于定时器的巡回服务系统 382
7.4 RTOS基础 383
7.4.1 RTOS的基本概念 383
7.4.2 使用RTOS的优势 384
7.4.3 RTOS的功能组成 385
7.4.4 常用的RTOS 388
7.5 FreeRTOS 389
7.5.1 FreeRTOS的体系结构 389
7.5.2 FreeRTOS系统的任务调度机制 390
7.5.3 FreeRTOS系统的任务管理机制 391
7.5.4 FreeRTOS任务通信与同步机制 392
7.5.5 FreeRTOS移植到微控制器的方法 393
7.6 FreeRTOS操作示例 393
7.6.1 FreeRTOS库函数说明 393
7.6.2 示例代码 396
思考题与习题 401
第8章 低功耗与电磁兼容 403
8.1 低功耗设计方法 403
8.1.1 利用I/O引脚为外部器件供电 403
8.1.2 电源管理单元的设计 404
8.1.3 动态改变CPU的时钟频率 404
8.1.4 软件系统的低功耗设计 405
8.2 电源设计 408
8.2.1 电池的选择 408
8.2.2 超低静态电流LDO 414
8.2.3 直流/直流转换器 416
8.3 电磁兼容性 419
8.3.1 电磁干扰的形成 419
8.3.2 电磁兼容的常用元器件 421
8.3.3 电磁兼容的常用技巧 423
思考题与习题 427
第9章 软件开发环境 429
9.1 常用软件开发工具 429
9.2 Keil MDK简介 430
9.2.1 Keil MDK-ARM的安装 431
9.2.2 Keil MDK-ARM工程的建立与调试 436
9.3 CCSv6软件开发环境 445
9.3.1 CCSv6概述 445
9.3.2 CCSv6安装 445
9.3.3 CCSv6工程开发 448
9.4 TivaWare库 453
9.4.1 外设驱动库 453
9.4.2 图形库 454
9.4.3 USB库 455
9.4.4 IQMath库 457
9.4.5 传感器库 457
思考题与习题 457
第10章 硬件实验平台 458
10.1 LaunchPad概述 459
10.1.1 BoosterPacks 460
10.1.2 规格 460
10.2 LaunchPad硬件资源 461
10.2.1 功能描述 468
10.2.2 电源管理 471
10.2.3 内部电路调试接口(ICDI) 472
10.3 DY-Tiva-PB扩展板简介 472
10.3.1 DY-Tiva-PB硬件规格 477
10.3.2 DY-Tiva-PB功能单元介绍 477
10.3.3 DY-Tiva-PB实验目录 482
思考题与习题 483
附录 TivaWare库函数清单 484
参考文献 493