第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 ARM嵌入式处理器简介 6
1.3嵌入式系统的组成 7
1.3.1嵌入式系统的硬件 7
1.3.2嵌入式系统的软件 9
1.4嵌入式操作系统 10
1.4.1嵌入式操作系统及其特点 10
1.4.2典型嵌入式操作系统 10
1.5嵌入式系统的设计方法 11
1.5.1嵌入式系统设计概述 11
1.5.2嵌入式系统的设计步骤 12
1.5.3嵌入式系统的传统设计方法 13
1.5.4嵌入式系统的硬、软件协同设计技术 15
1.6嵌入式系统的软件设计 16
1.6.1嵌入式系统的软件设计过程 16
1.6.2嵌入式操作系统的选择 17
1.6.3嵌入式软件开发工具链的构建 18
1.7嵌入式系统开发与调试工具 21
1.7.1嵌入式系统硬件开发与调试工具 21
1.7.2嵌入式系统软件开发工具 22
习题一 26
第2章 嵌入式处理器 27
2.1嵌入式处理器内核 27
2.2 ARM体系结构 28
2.3 ARM处理器的工作状态与工作模式 29
2.3.1 ARM处理器的工作状态 30
2.3.2 ARM处理器的工作模式 31
2.4 ARM处理器寄存器组织 32
2.4.1 ARM状态下的寄存器组织 32
2.4.2 Thumb/Thumb-2状态下的寄存器组织 34
2.5 ARM处理器的异常中断 35
2.5.1经典ARM处理器的异常中断 35
2.5.2 ARM Cortex-M微控制器的异常中断 37
2.5.3 ARM Cortex-M系列微控制器的堆栈 41
2.5.4 ARM Cortex-M异常的中断响应与返回过程 41
2.6 ARM的存储器格式及数据类型 42
2.6.1 ARM的两种存储字的格式 42
2.6.2 ARM存储器数据类型 43
2.7 ARM流水线技术 44
2.7.1指令流水线处理 44
2.7.2不同ARM处理器的指令流水线 45
2.8基于AMBA总线的ARM处理器芯片 45
2.8.1 AMBA总线的发展及版本 46
2.8.2基于AMBA总线的ARM处理器芯片 47
2.9典型嵌入式处理器 48
2.9.1典型ARM处理器系列 48
2.9.2 ST公司的STM32F10x系列微控制器 50
习题二 52
第3章 嵌入式系统程序设计 53
3.1 ARM指令分类及指令格式 53
3.1.1 ARM指令分类 53
3.1.2 ARM指令格式 54
3.1.3 ARM指令中的操作数符号 56
3.1.4 ARM指令中的移位操作符 56
3.2 ARM指令的寻址方式 57
3.2.1立即寻址 57
3.2.2寄存器寻址 57
3.2.3寄存器间接寻址 57
3.2.4基址加变址寻址 58
3.2.5相对寻址 58
3.2.6堆栈寻址 58
3.2.7块拷贝寻址 59
3.3 ARM指令集 59
3.3.1数据处理指令 59
3.3.2程序状态寄存器访问指令 61
3.3.3分支指令 62
3.3.4加载/存储指令 63
3.3.5协处理器指令 66
3.3.6异常中断指令 67
3.4 Thumb指令集 68
3.4.1数据处理指令 68
3.4.2分支指令 69
3.4.3加载/存储指令 70
3.4.4异常中断指令 72
3.5 Thumb-2指令集 73
3.5.1数据处理指令 73
3.5.2分支指令与程序状态指令 75
3.5.3加载与存储指令 75
3.5.4中断相关指令 77
3.6 ARM处理器支持的伪指令 77
3.7 ARM汇编语言程序设计 78
3.7.1 ARM汇编语言的语句格式 78
3.7.2在汇编语言程序中常用的符号 78
3.7.3汇编语言程序中的表达式和运算符 79
3.7.4 ARM汇编器所支持的伪指令 81
3.7.5 ARM汇编语言的程序结构 83
3.8 CMSIS及其规范 84
3.8.1 CMSIS软件结构及层次 84
3.8.2 CMSIS代码规范 86
3.8.3 CMSIS文件结构 87
3.9 Boot Loader及启动文件 91
3.9.1 ARM处理器的启动过程 91
3.9.2 Boot Loader 93
3.9.3启动文件 94
3.10嵌入式C语言程序设计 100
3.10.1嵌入式C语言程序设计基础 100
3.10.2嵌入式系统程序设计过程 107
3.10.3嵌入式系统的程序结构 107
3.10.4汇编语言与C语言的混合编程 111
3.10.5固件库及其使用 113
习题三 117
第4章 嵌入式最小系统 120
4.1嵌入式最小系统的组成 120
4.2嵌入式处理器选型 120
4.2.1功能参数选择原则 121
4.2.2非功能性参数选择原则 122
4.3供电模块设计 124
4.3.1降压型电源设计 125
4.3.2升压型电源设计 125
4.3.3隔离型电源设计 126
4.3.4 STM32F10x电源设计 126
4.4时钟与复位电路设计 127
4.4.1时钟电路及时钟源选择 127
4.4.2复位模块 129
4.5调试接口设计 132
4.5.1 JTAG调试接口设计 132
4.5.2 SWD调试接口设计 133
4.5.3采用通用JTAG仿真器做SWD接口 134
4.6存储器接口设计 135
4.6.1存储器地址映射 135
4.6.2片内存储器 136
4.6.3片外存储器 136
4.6.4辅助存储器 137
4.6.5外部存储器扩展 139
习题四 142
第5章 数字输入输出系统设计 143
5.1通用输入输出端口 143
5.1.1 GPIO概述 143
5.1.2 GPIO基本工作模式 143
5.1.3 GPIO端口保护措施 147
5.1.4 GPIO端口的中断 148
5.1.5典型ARM芯片GPIO的操作 148
5.2数字信号的逻辑电平及其转换 151
5.2.1数字信号的逻辑电平 151
5.2.2数字信号的逻辑电平转换 153
5.3数字输入接口的扩展 158
5.3.1使用缓冲器扩展并行输入接口 158
5.3.2使用串行移位寄存器来扩展并行输入接口 158
5.4数字输出接口的扩展 159
5.4.1使用锁存器扩展并行输出接口 159
5.4.2使用串行移位寄存器来扩展并行输出接口 160
5.5数字输入输出接口的一般结构 160
5.5.1数字输入接口的一般结构 160
5.5.2数字输出接口的一般结构 162
5.6人机交互通道设计 164
5.6.1键盘接口设计 164
5.6.2显示接口设计 165
5.6.3人机交互接口应用 175
习题五 178
第6章 定时计数器组件 180
6.1通用定时计数器Timer 180
6.1.1内部定时功能 180
6.1.2外部计数功能 181
6.1.3捕获功能 181
6.1.4比较功能 182
6.1.5 STM32F10x系列定时器TIMx及其应用 182
6.2系统节拍定时器SysTick 192
6.3看门狗定时器WDT 194
6.3.1 IWDG 194
6.3.2 WWDG 196
6.4实时钟定时器RTC 197
6.4.1 RTC的硬件组成 198
6.4.2 RTC相关寄存器 199
6.4.3 RTC的应用 200
6.5脉宽调制定时器 204
6.5.1 PWM概述 204
6.5.2 STM32F10x系列PWM模式 206
6.5.3 PWM相关寄存器 207
6.5.4 PWM的应用 208
习题六 210
第7章 模拟输入输出系统设计 213
7.1模拟输入输出系统概述 213
7.2传感器及变送器 213
7.2.1传感器 214
7.2.2变送器 215
7.3信号调整的电路设计 216
7.3.1信号调理电路的功能及任务 216
7.3.2信号滤波 217
7.3.3信号放大 220
7.3.4激励与变换 221
7.4模/数转换器及其接口设计 223
7.4.1片上ADC及其应用 223
7.4.2片外ADC及其应用 231
7.5数/模转换器 233
7.5.1片内DAC及其应用 233
7.5.2片外DAC及其应用 237
7.6典型模拟输入输出系统实例 238
7.6.1温度变送器设计要求 238
7.6.2温度变送器硬件系统设计 239
习题七 241
第8章 互连通信接口设计 243
8.1串行异步收发器 243
8.1.1串行异步收发器UART/USART 243
8.1.2 UART的应用 247
8.2 RS-232接口及其应用 251
8.2.1 RS-232接口 251
8.2.2基于RS-232的双机通信 253
8.2.3 STM32F10x基于RS-232的接口 254
8.3 RS-485接口及其应用 255
8.3.1 RS-485接口 255
8.3.2 RS-485的隔离应用 258
8.3.3 RS-485主从式多机通信的应用 259
8.4 I2 C总线接口 261
8.4.1 I2 C总线概述 261
8.4.2 STM32F10x的I2 C功能模块及寄存器结构 263
8.4.3 I2C总线接口的应用 267
8.5 SPI串行外设接口 269
8.5.1 SPI串行外设接口概述 269
8.5.2典型SPI结构 270
8.5.3 SPI接口的应用 270
8.6 CAN总线接口 274
8.6.1 CAN总线概述 274
8.6.2典型片上CAN控制器的组成及相关寄存器 276
8.6.3 CAN总线接口的应用 281
8.7 Ethernet以太网控制器接口的应用 284
8.7.1 Ethernet控制器概述 284
8.7.2基于片上以太网控制器的以太网接口连接 285
8.7.3以太网接口的应用 286
8.8 USB接口 289
8.8.1 USB接口的组成 289
8.8.2 USB接口连接 291
8.8.3 USB接口的应用 292
8.9无线通信模块及其接口 294
8.9.1常用无线通信模块 294
8.9.2无线通信模块接口与MCU的连接 296
习题八 297
第9章 嵌入式操作系统及其移植 298
9.1嵌入式操作系统概述 298
9.1.1嵌入式操作系统的一般结构 298
9.1.2嵌入式操作系统的特点与分类 298
9.2典型嵌入式操作系统μC/OS-Ⅱ 300
9.2.1 μC/OS-Ⅱ操作系统概述 300
9.2.2 μC/OS-Ⅱ的任务及其管理 303
9.2.3 μC/OS-Ⅱ的系统服务 306
9.3 μC/OS-Ⅱ的移植 309
9.3.1 μC/OS-Ⅱ移植的一般方法 309
9.3.2 μC/OS-Ⅱ移植到STM32F10x微控制器 313
9.4基于μC/OS-Ⅱ下的应用程序设计 316
9.4.1 μC/OS-Ⅱ的初始化与main()函数结构 316
9.4.2 μC/OS-Ⅱ用户任务的三种结构 317
9.4.3 μC/OS-Ⅱ应用程序设计实例 318
习题九 323
第10章 嵌入式应用系统设计实例 325
10.1系统设计要求 325
10.1.1系统总体要求 325
10.1.2主要功能与技术指标 326
10.2需求分析与体系结构设计 326
10.2.1需求分析 326
10.2.2系统体系结构设计 328
10.3最小系统设计 329
10.3.1嵌入式处理器的选型 329
10.3.2电源设计 330
10.3.3最小系统构成 331
10.3.4 MCU资源分配 333
10.4通道设计 335
10.4.1通道模块元器件选型 335
10.4.2模拟通道设计 335
10.4.3数字通道设计 338
10.4.4互连通信接口 343
10.5嵌入式硬件综合 345
10.5.1硬件原理图综合 345
10.5.2硬件PCB板设计 347
10.6嵌入式软件设计 348
10.6.1无操作系统下的软件设计 349
10.6.2有操作系统下的软件设计 350
10.7系统调试 351
10.7.1硬件调试概述 351
10.7.2电源模块的调试 353
10.7.3最小系统调试 353
10.7.4通道调试 354
10.7.5系统综合调试 358
习题十 359
参考文献 360