第1章 嵌入式系统基础 1
1.1 嵌入式系统的概念及组成 1
1.1.1 嵌入式平台的硬件构架 2
1.1.2 板级支持包和嵌入式系统 3
1.1.3 嵌入式系统上的应用程序 3
1.2 嵌入式C语言 4
1.2.1 变量与常量 4
1.2.2 运算符 5
1.2.3 预处理 7
1.2.4 位处理 9
1.2.5 C编程基本规则 9
1.3 ARM Cortex-M3概述 10
1.3.1 ARM——Advanced RISC Machines 10
1.3.2 Cortex-M3简介 11
1.4 典型Cortex-M3微控制器简介 18
1.4.1 Cortex-M3的微处理器Stellaris系列 18
1.4.2 Stellaris系列处理器的分类 19
1.4.3 LM3S8962引脚功能和硬件电路 20
小结 35
思考题 35
第2章 集成开发环境 37
2.1 嵌入式软件开发过程 37
2.1.1 创建过程 37
2.1.2 编译 37
2.1.3 链接 38
2.1.4 定址 39
2.1.5 调试过程 39
2.2 IAR EWARM安装 40
2.3 安装驱动库 42
2.3.1 下载最新库文件 42
2.3.2 拷贝连接器命令文件 43
2.3.3 拷贝驱动库头文件 43
2.3.4 拷贝底层驱动函数库 45
2.4 EWARM新建项目 46
2.4.1 建立一个项目文件目录 46
2.4.2 新建工作区 46
2.4.3 生成新项目 46
2.4.4 添加/新建文件 48
2.4.5 项目选项设置 52
2.4.6 通用选项设置 52
2.4.7 C/C++编译器选项设置 52
2.4.8 Assembler选项设置 53
2.4.9 Linker选项设置 53
2.4.10 Debugger选项设置 56
2.5 编译和运行应用程序 58
2.5.1 编译连接处理 58
2.5.2 查看MAP文件 59
2.5.3 加载应用程序 59
2.5.4 应用程序的相关调试 60
2.5.5 生成hex文件 63
小结 64
思考题 64
第3章 系统控制 65
3.1 电源结构与LDO控制 65
3.2 时钟控制 68
3.3 复位控制 76
3.4 外设控制 80
3.5 睡眠与深度睡眠 82
3.6 杂项功能 90
3.7 中断控制 92
3.7.1 中断基本概念 92
3.7.2 Stellaris中断基本编程方法 93
3.7.3 中断库函数 95
3.7.4 GPIO中断控制例程 99
小结 100
思考题 100
第4章 通用输入输出 102
4.1 通用I/O口两种应用电路 102
4.2 GPIO概述 103
4.3 特殊引脚及寄存器 106
4.4 GPIO库函数 108
4.5 两只LED交替闪烁控制实例 116
4.6 KEY控制LED实例 116
小结 119
思考题 119
第5章 串行通信 120
5.1 UART串口通信 120
5.1.1 UART异步串口概述 120
5.1.2 UART总体特性 121
5.1.3 UART功能概述 125
5.1.4 UART库函数 128
5.1.5 UART例程分析 137
5.2 I2C串行通信 146
5.2.1 I2C协议基础 147
5.2.2 I2C功能概述 151
5.2.3 I2C库函数 152
5.2.4 I2C例程分析 160
5.3 SSI串行通信 166
5.3.1 SSI总体特性 166
5.3.2 SSI通信协议 167
5.3.3 SSI功能概述 173
5.3.4 SSI库函数参考 174
5.3.5 SSI驱动例程分析 179
小结 184
思考题 184
第6章 时钟模块 186
6.1 系统节拍定时 186
6.1.1 SysTick功能简介 186
6.1.2 SysTick基本操作 187
6.1.3 SysTick中断控制 188
6.1.4 模拟PC按键重复特性实例 190
6.2 通用定时器 192
6.2.1 Timer总体特性 192
6.2.2 Timer功能概述 193
6.2.3 Timer库函数 195
6.2.4 定时器32位单次触发定时实例 203
6.2.5 定时器32位周期定时实例 205
6.2.6 32位RTC定时实例 206
6.2.7 定时器16位单次触发定时实例 209
6.2.8 定时器16位周期定时实例 210
6.2.9 定时器16位输入边沿计数捕获实例 211
6.2.10 定时器16位输入边沿定时捕获实例 213
6.2.11 定时器16位PWM实例 216
6.2.12 Timer PWM应用蜂鸣器发声实例 217
6.3 看门狗 218
6.3.1 看门狗功能简述 219
6.3.2 看门狗的工作原理 219
6.3.3 外部看门狗 220
6.3.4 WatchDog功能概述 221
6.3.5 如何正确使用看门狗 222
6.3.6 WatchDog库函数 222
6.3.7 WatchDog复位例程 226
6.3.8 WatchDog作为普通定时器实例 227
小结 229
思考题 229
第7章 模数转换ADC 230
7.1 ADC总体特性 230
7.2 ADC功能描述 231
7.3 ADC应用注意事项 235
7.4 ADC库函数 237
7.4.1 ADC采样序列操作 237
7.4.2 ADC处理器触发 241
7.4.3 ADC过采样 241
7.4.4 ADC中断控制 243
7.5 ADC模块的应用 245
7.5.1 ADC模块初始化 245
7.5.2 ADC开始采样 246
7.6 ADC例程分析 246
7.6.1 处理器触发ADC采样实例 246
7.6.2 ADC内置的温度传感器实例 248
7.6.3 处理器触发多通道ADC采样实例 251
7.6.4 外部事件触发ADC采样实例 253
7.6.5 定时器溢出触发ADC采样实例 256
7.6.6 模拟比较器触发ADC采样实例 258
7.6.7 差分输入ADC采样实例 260
小结 263
思考题 263
第8章 脉冲宽度调制及模拟比较器 265
8.1 脉冲宽度调制 265
8.1.1 PWM总体特性 265
8.1.2 PWM功能概述 266
8.1.3 PWM库函数 270
8.1.4 产生两路PWM信号实例 285
8.1.5 产生两路带死区的PWM实例 287
8.1.6 PWM发生器中断实例 288
8.2 模拟比较器 290
8.2.1 电压比较器 290
8.2.2 COMP功能 290
8.2.3 COMP库函数 292
8.2.4 内部参考源输出驱动LED例程 297
8.2.5 外部参考源输出触发中断实例 298
小结 301
思考题 301
第9章 CAN接口应用 302
9.1 CAN总线简介 302
9.2 CAN的分层结构及通信协议 302
9.2.1 CAN的分层结构 302
9.2.2 CAN的通信协议 303
9.3 CAN总线接口应用电路 307
9.3.1 嵌入式处理器上扩展CAN总线接口 307
9.3.2 CAN总线接口应用电路 307
9.3.3 收发器隔离电路设计 308
9.4 CAN模块特性及驱动库函数 311
9.4.1 数据结构 312
9.4.2 枚举类型 313
9.4.3 接口函数 315
9.5 CAN模块应用流程 322
9.6 CAN总线常用函数及例程 324
9.6.1 CAN总线常用的函数 324
9.6.2 收发数据 325
9.6.3 不同节点通信案例 326
9.6.4 CAN总线数据简单发送数据实例 328
9.6.5 CAN发送ADC采样等多组数据实例 330
9.6.6 CAN总线接收数据实例 333
小结 337
思考题 337
第10章 智能汽车设计实例分析 338
10.1 智能汽车设计概述 338
10.1.1 智能汽车设计的意义及研究内容 338
10.1.2 智能汽车设计的技术关键 339
10.1.3 中国大学生智能汽车设计竞赛简介 340
10.1.4 中国大学生智能汽车设计竞赛的基本规则 342
10.2 智能汽车硬件设计 347
10.2.1 传感器系统 347
10.2.2 电源系统 353
10.3 智能车软件设计 356
10.3.1 软件系统整体框架 356
10.3.2 角度及角速度测量 357
10.3.3 道路信息提取 361
10.3.4 路径识别算法 362
10.3.5 控制策略及控制算法 367
10.4 智能车系统调试 369
10.4.1 电子设计调试基础知识 369
10.4.2 智能车设计的调试及注意事项 370
小结 371
思考题 372
参考文献 373