第1章 嵌入式系统基础 1
1.1 嵌入式系统概念 1
1.1.1 嵌入式系统定义 1
1.1.2 嵌入式系统组成 2
1.1.3 嵌入式系统特点 3
1.1.4 嵌入式系统应用 5
1.1.5 实时系统 6
1.2 嵌入式处理器 7
1.2.1 嵌入式处理器分类 7
1.2.2 微控制器 8
1.2.3 嵌入式微处理器 9
1.2.4 DSP处理器 9
1.2.5 片上系统 10
1.2.6 典型的嵌入式处理器 11
1.3 嵌入式操作系统 12
1.3.1 操作系统概念和分类 12
1.3.2 实时操作系统 16
1.3.3 常见的嵌入式操作系统 19
1.4 实时操作系统的内核 23
1.4.1 任务管理 23
1.4.2 任务间的通信和同步 30
1.4.3 存储器管理 32
1.4.4 定时器和中断管理 33
习题 34
第2章 嵌入式系统开发过程2.1 嵌入式软件开发的特点 35
2.2 嵌入式软件的开发流程 36
2.3 嵌入式系统调试 42
2.4 板级支持包 46
习题 48
第3章 Cortex-M体系结构3.1 ARM体系结构概述 49
3.1.1 ARM体系结构的特点 49
3.1.2 流水线 52
3.1.3 ARM处理器核 54
3.1.4 结构框图 64
3.1.5 典型的连接方式 65
3.1.6 ARM JTAG调试接口 67
3.2 编程模型 68
3.2.1 Thumb-2指令集体系结构(ISA) 68
3.2.2 寄存器 69
3.2.3 工作模式和特权级别 72
3.2.4 Cortex-M3堆栈 73
3.2.5 数据类型 74
3.2.6 存储器和存储器映射I/O 74
3.3 ARM基本寻址方式 77
3.4 Thumb-2指令集说明 82
3.4.1 条件执行 82
3.4.2 指令分类说明 83
3.4.3 Thumb-2指令集的特点 103
3.4.4 ARM汇编语言程序设计 108
3.5 存储器映射 111
3.5.1 存储系统简介 111
3.5.2 存储器映射空间 111
3.5.3 位绑定操作 114
3.6 中断和异常 117
3.6.1 异常类型 118
3.6.2 优先级的定义 119
3.6.3 向量表 121
3.6.4 中断输入及挂起行为 122
3.6.5 NVIC与中断控制 124
3.6.6 中断/异常的响应序列 126
3.6.7 尾链中断 127
3.6.8 迟到异常处理 128
3.6.9 异常返回值 128
3.6.10 中断延迟 130
3.7 ARM Cortex-M的优势 130
习题 132
第4章 ARM Cortex-M微控制器4.1 LM3S微控制器 134
4.1.1 LM3S微控制器分类 134
4.1.2 LM3S微控制器特性和结构 135
4.1.3 系统控制和时钟 144
4.1.4 Stellaris外设驱动库 150
4.2 STM32微控制器 155
4.2.1 STM32微控制器分类 155
4.2.2 STM32F103微控制器特性和结构 156
4.2.3 STM32复位与时钟控制 163
4.2.4 STM32启动模式 168
4.2.5 STM32固件库 169
4.3 LPC1000系列微控制器 174
4.3.1 LPC1000系列微控制器分类 174
4.3.2 LPC1700微控制器特性和结构 175
4.3.3 LPC1700系统控制 179
4.3.4 LPC1700时钟和功耗控制 181
4.4 SAM3U微控制器 187
4.4.1 SAM3U微控制器系列 187
4.4.2 SAM3U微控制器特性和结构 188
4.4.3 SAM3U复位与时钟控制 191
习题 198
第5章 片上资源的编程技术5.1 LM3S微控制器片上资源 199
5.1.1 LM3S通用输入/输出端口GPIO 199
5.1.2 LM3S按键中断 208
5.1.3 LM3S通用定时器 210
5.1.4 LM3S串行口UART 221
5.1.5 LM3S模/数转换器(ADC) 226
5.2 STM32微控制器片上资源 228
5.2.1 STM32通用和复用功能I/O(GPIO和AFIO) 228
5.2.2 STM32按键中断 234
5.2.3 STM32通用定时器 240
5.3 LPC1700微控制器片上资源 267
5.3.1 LPC1700通用输入输出口GPIO 267
5.3.2 LPC1700按键中断 276
5.3.3 LPC1700通用定时器 284
5.4 SAM3U微控制器片上资源 298
5.4.1 SAM3U通用输入输出口GPIO 298
5.4.2 SAM3U按键中断 304
5.4.3 SAM3U通用定时器 307
习题 321
第6章 嵌入式系统接口及编程6.1 字符型LCD显示模块 322
6.1.1 LCD硬件接口设计 322
6.1.2 LCD显示编程 323
6.2 行列式键盘 326
6.2.1 键盘硬件接口设计 326
6.2.2 键盘扫描程序设计 327
6.3 电机控制 332
6.3.1 步进电机控制模块 332
6.3.2 直流电机控制模块 339
6.4 串行总线接口SPI 343
6.4.1 串行总线接口SPI简介 343
6.4.2 Stellaris的同步串行接口(SSI) 343
6.4.3 与串行总线接口SPI有关的函数 346
6.4.4 ZigBee通信实例 347
6.5 I2C接口 360
6.5.1 I2C总线简介 360
6.5.2 I2C总线的通信规约 360
6.5.3 Stellaris的I2C接口 362
6.5.4 与I2C有关的库函数 364
6.5.5 I2C接口应用实例 365
习题 370
第7章 μC/OS-II移植 371
7.1 移植代码说明 371
7.1.1 includes.h 372
7.1.2 OS_CPU.H文件 372
7.1.3 OS_CPU_C.C文件 374
7.1.4 OS_CPU_A.ASM 375
7.2 异常/中断 381
7.3 启动文件和目标板配置文件 381
7.3.1 startup_ewarm.c文件 382
7.3.2 Target.H文件 384
7.3.3 Target.C文件 387
7.4 用户文件 389
第8章 UML设计方法 391
8.1 常见的模型元素 391
8.1.1 结构要素 391
8.1.2 行为要素 393
8.1.3 分组要素 393
8.1.4 注释要素 394
8.1.5 关系 394
8.2 图 395
8.3 视图 400
参考文献 402