第1章 嵌入式系统基础 1
1.1 嵌入式系统概念&.. 1
1.1.1 嵌入式系统定义 1
1.1.2 嵌入式系统组成 2
1.1.3 嵌入式系统特点 3
1.1.4 嵌入式系统应用 4
1.1.5 实时系统 5
1.2 嵌入式处理器 6
1.2.1 嵌入式处理器分类 6
1.2.2 典型的嵌入式处理器 8
1.3 嵌入式操作系统 10
1.3.1 操作系统概念和分类 10
1.3.2 实时操作系统 13
1.3.3 常见的嵌入式操作系统 15
1.4 实时操作系统的内核 19
1.4.1 任务管理 19
1.4.2 任务间的通信和同步 24
1.4.3 存储器管理 26
1.4.4 定时器和中断管理 26
习题 27
第2章 嵌入式系统开发过程2.1 嵌入式软件开发的特点 28
2.2 嵌入式软件的开发流程 29
2.3 嵌入式系统调试 34
2.4 板级支持包 37
习题 38
第3章 Cortex-M体系结构3.1 ARM体系结构概述 39
3.1.1 ARM体系结构的特点 39
3.1.2 流水线 41
3.1.3 ARM处理器核 42
3.1.4 结构框图 47
3.1.5 典型的连接方式 48
3.1.6 ARM JTAG调试接口 49
3.2 编程模型 50
3.2.1 Thumb-2指令集体系结构(ISA) 50
3.2.2 寄存器 51
3.2.3 工作模式和特权级别 54
3.2.4 Cortex-M3堆栈 55
3.2.5 数据类型 55
3.2.6 存储器和存储器映射I/O 56
3.3 ARM基本寻址方式 57
3.4 Thumb-2指令集说明 62
3.4.1 条件执行 62
3.4.2 指令分类说明 63
3.4.3 Thumb-2指令集的特点 77
3.4.4 ARM汇编语言程序设计 78
3.5 存储器映射 81
3.5.1 存储系统简介 81
3.5.2 存储器映射空间 81
3.5.3 位绑定操作 83
3.6 中断和异常 86
3.6.1 异常类型 87
3.6.2 优先级的定义 88
3.6.3 向量表 90
3.6.4 中断输入及挂起行为 91
3.6.5 NVIC与中断控制 92
3.6.6 中断/异常的响应序列 94
3.6.7 尾链中断 95
3.6.8 迟到异常处理 96
3.6.9 异常返回值 96
3.6.10 中断延迟 97
3.7 ARM Cortex-M的优势 97
习题 99
第4章 ARM Cortex-M微控制器4.1 Stellaris微控制器分类 100
4.2 Stellaris微控制器特性 101
4.3 Stellaris微控制器结构 102
4.3.1 内部资源概述 104
4.3.2 芯片引脚描述 108
4.3.3 存储器组织 112
4.4 系统控制器单元 113
4.4.1 系统控制 113
4.4.2 复位控制 114
4.4.3 时钟控制 116
4.4.4 功耗控制 118
4.5 Stellaris微控制器最小系统 119
4.6 Stellaris外设驱动库 128
4.7 微控制器开发工具 135
4.7.1 CCSv4集成开发环境简介 136
4.7.2 RealView MDK开发工具简介 138
4.7.3 IAR EW ARM集成开发环境简介 140
4.7.4 CodeSourcery Sourcery G++开发工具简介 142
习题 143
第5章 片内资源的编程技术5.1 通用输入/输出端口GPIO 145
5.1.1 GPIO概述 145
5.1.2 功能描述 145
5.1.3 与GPIO有关的库函数 147
5.1.4 LED显示例程 150
5.2 按键中断 152
5.2.1 中断基础知识 152
5.2.2 中断控制 152
5.2.3 与中断有关的库函数 153
5.2.4 按键中断例程 154
5.3 定时器 155
5.3.1 定时器概述 155
5.3.2 功能描述 156
5.3.3 与定时器有关的库函数 161
5.3.4 通用定时器示例程序 164
5.3.5 看门狗定时器 165
5.4 脉宽调制器PWM 167
5.4.1 脉宽调制基本原理 167
5.4.2 与PWM有关的库函数 171
5.4.3 PWM示例程序 172
5.5 串行口UART 173
5.6 模/数转换器ADC 177
习题 180
第6章 人机交互的接口及编程 180
6.1 行列式键盘 182
6.1.1 键盘硬件接口设计 182
6.1.2 键盘扫描程序设计 183
6.2 可编程键盘显示接口芯片HD7279 187
6.2.1 HD7279简介及接口 187
6.2.2 数码管和键盘示例 190
6.3 字符型LCD显示模块 193
6.3.1 字符型LCD模块和指令 193
6.3.2 LCD硬件接口及编程 195
6.4 点阵式LCD显示模块 199
6.5 16×16 LED点阵显示汉字 202
6.6 带触摸屏的QVQA LCD模块 205
习题 209
第7章 总线接口及编程 210
7.1 串行总线接口SPI 210
7.1.1 串行总线接口SPI简介 210
7.1.2 Stellaris的同步串行接口(SSI) 210
7.1.3 与串行总线接口SPI有关的函数 211
7.1.4 A/D转换器TLC2543 213
7.1.5 D/A转换器TLV5616 216
7.1.6 Flash存储器扩展 219
7.1.7 SD/MMC卡 221
7.2 I2C接口 223
7.2.1 I2C总线简介 223
7.2.2 I2C总线的通信规约 224
7.2.3 Stellaris的I2C接口 225
7.2.4 与I2C有关的库函数 227
7.2.5 I2C的IC卡接口及编程 228
7.2.6 I2C的数据采集模块 231
7.3 I2S接口 234
7.3.1 I2S总线简介 234
7.3.2 Stellaris的I2S接口 236
7.3.3 与I2S有关的库函数 239
7.3.4 I2S的音频芯片及编程 240
7.4 USB接口 243
7.4.1 USB接口概述 243
7.4.2 Stellaris的USB接口 247
7.4.3 与USB有关的库函数 257
7.4.4 基于USB设备的Device实验 261
7.4.5 基于USB设备的Host实验 261
习题 263
第8章 网络接口及编程 264
8.1 CAN总线通信接口 264
8.1.1 CAN总线简介 264
8.1.2 Stellaris内部集成的CAN控制器 265
8.1.3 与CAN有关的库函数 271
8.1.4 双机数据传输通信 272
8.2 以太网接口 276
8.2.1 以太网接口简介 276
8.2.2 Stellaris内部集成的以太网控制器 276
8.2.3 与以太网有关的库函数 281
8.2.4 基于以太网的Web服务器 282
习题 284
第9章 电机控制的接口及编程9.1 步进电机控制模块 285
9.2 直流电机控制模块 290
9.3 带以太网和CAN的无刷直流电机控制 294
习题 297
第10章 物联网数据采集与传输 297
10.1 物联网简介 298
10.2 温湿度采集 300
10.2.1 温度和湿度传感器SHT11 300
10.2.2 温度传感器DS18B20 305
10.3 光照度传感器采集 308
10.4 加速度传感器采集 311
10.5 RFID采集 314
10.6 ZigBee点对点通信 317
10.7 无线传感器网络协调器节点设计 325
习题 329
附录A μC/OS-Ⅱ移植 330
A.1 移植代码说明 330
A.1.1 includes.h文件 331
A.1.2 OS_CPU.H文件 331
A.1.3 OS_CPU_C.C文件 332
A.1.4 OS_CPU_A.ASM文件 333
A.2 异常/中断 339
A.3 启动文件和目标板配置文件 339
A.3.1 startup_ewarm.c文件 339
A.3.2 Target.H文件 341
A.3.3 Target.C文件 344
A.4 用户文件 346
参考文献 348