第1章 嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统定义 1
1.1.2 嵌入式系统特点 2
1.1.3 嵌入式系统分类 4
1.1.4 嵌入式系统发展 7
1.2 ARM体系结构及微处理器系列 10
1.2.1 ARM公司简介 10
1.2.2 ARM体系结构简介 13
1.3 Cortex-M系列处理器简介 17
1.4 STM32系列微控制器简介 21
1.5 STM32教学开发板 26
第2章 Cortex-M3体系结构 27
2.1 CM3微处理器核结构 27
2.2 处理器的工作模式及状态 29
2.3 寄存器 30
2.4 总线接口 34
2.5 存储器的组织与映射 36
2.5.1 存储器格式 36
2.5.2 存储器层次结构 36
2.5.3 CM3存储器组织 38
2.5.4 STM32存储器映射 39
2.5.5 位绑定操作 43
2.6 指令集 46
2.6.1 ARM指令集 46
2.6.2 Thumb指令集 47
2.6.3 Thumb-2指令集 48
2.7 流水线 50
2.8 异常和中断 51
2.9 存储器保护单元MPU 56
2.10 STM32微控制器概述 57
2.10.1 STM32命名 57
2.10.2 STM32内部资源 58
第3章 STM32最小系统 61
3.1 电源电路 61
3.1.1 供电方案 61
3.1.2 电源管理器 63
3.1.3 低功耗模式 63
3.2 时钟电路 65
3.2.1 HSE时钟和HSI时钟 66
3.2.2 PLL 67
3.2.3 LSE时钟和LSI时钟 67
3.2.4 系统时钟SYSCLK 68
3.2.5 RCC寄存器 69
3.3 复位电路 72
3.4 STM32启动 74
3.5 程序下载电路 79
3.6 STM32的最小系统 81
第4章 STM32程序设计 82
4.1 嵌入式软件层次结构 82
4.2 Cortex微控制器软件接口标准 84
4.3 FWLib固件库 87
4.3.1 STM32标准外设库 87
4.3.2 固件库命名规则 90
4.3.3 数据类型和结构 91
4.3.4 固件库的应用 94
4.4 嵌入式C程序特点 97
4.5 开发环境简介 100
第5章 GPIO原理及应用 102
5.1 GPIO的硬件结构和功能 102
5.1.1 GPIO硬件结构 102
5.1.2 复用功能 103
5.1.3 GPIO输入功能 103
5.1.4 GPIO输出功能 104
5.1.5 GPIO速度选择 106
5.1.6 钳位功能 107
5.2 GPIO寄存器 107
5.3 GPIO库函数 111
5.4 库函数和寄存器的关系 114
5.5 应用实例 121
第6章 EXTI原理及应用 127
6.1 STM32中断通道 127
6.2 STM32中断的过程 131
6.3 NVIC硬件结构及软件配置 132
6.3.1 NVIC硬件结构 132
6.3.2 STM32中断优先级 133
6.3.3 中断向量表 134
6.3.4 NVIC寄存器 135
6.3.5 NVIC库结构 140
6.4 EXTI硬件结构及软件配置 140
6.4.1 EXTI硬件结构 140
6.4.2 中断及事件 141
6.4.3 EXTI中断通道和中断源 142
6.4.4 EXTI寄存器 142
6.4.5 EXTI库函数 144
6.5 应用实例 145
6.5.1 按键中断 145
6.5.2 中断嵌套案例1 149
6.5.3 中断嵌套案例2 151
第7章 USART原理及应用 155
7.1 端口重映射 155
7.2 USART功能和结构 156
7.2.1 USART功能 157
7.2.2 USART结构 158
7.3 USART帧格式 160
7.4 波特率设置 162
7.5 硬件流控制 163
7.6 USART中断请求 165
7.7 USART寄存器 166
7.8 USART库函数 167
7.9 USART应用实例 169
7.9.1 直接传送方式 169
7.9.2 中断传送方式 173
7.9.3 串口Echo回应程序 174
7.9.4 利用printf()的串口编程 174
第8章 定时器原理及应用 177
8.1 STM32定时器概述 177
8.2 通用定时器TIMx功能 178
8.3 通用定时器TIMx结构 178
8.3.1 时钟源选择 180
8.3.2 时基单元 182
8.3.3 捕获和比较通道 184
8.3.4 计数器模式 186
8.3.5 定时时间的计算 187
8.3.6 定时器中断 188
8.4 通用定时器TIMx寄存器 189
8.5 通用定时器TIMx库函数 192
8.6 TIM2应用实例 192
8.6.1 秒表 192
8.6.2 输出比较案例1 195
8.6.3 输出比较案例2 199
8.6.4 PWM输出 202
8.6.5 PWM输入捕获 204
8.7 RTC的功能及结构 207
8.7.1 RTC的基本功能 208
8.7.2 RTC的内部结构 208
8.8 RTC控制寄存器 209
8.9 备份寄存器 211
8.10 电源控制寄存器 214
8.11 RTC相关的RCC寄存器 215
8.12 RTC应用实例 215
8.13 系统时钟SysTick简介 220
8.14 SysTick寄存器 221
8.14.1 控制及状态寄存器(SYSTICKCSR) 221
8.14.2 重载寄存器(SYSTICKRVR) 221
8.14.3 当前值寄存器(SYSTICKCVR) 222
8.14.4 校准值寄存器(SYSTICKCALVR) 222
8.15 SysTick应用实例 223
第9章 DMA原理及应用 225
9.1 DMA简介 225
9.2 DMA的功能及结构 228
9.2.1 DMA的功能 228
9.2.2 DMA结构 229
9.3 DMA寄存器 230
9.4 DMA库函数 232
第10章 ADC原理及应用 235
10.1 ADC的功能及结构 235
10.2 ADC的工作模式 237
10.3 数据对齐 240
10.4 ADC中断 241
10.5 ADC寄存器 241
10.6 ADC库函数 243
10.7 应用实例 245
第11章 μC/OS-II嵌入式操作系统基础 250
11.1 操作系统的功能 250
11.2 操作系统的基本概念 252
11.2.1 进程和线程 252
11.2.2 实时操作系统RTOS 254
11.2.3 其他概念 256
11.2.4 应用程序在操作系统上的执行过程 262
11.3 操作系统的分类 263
11.3.1 单体结构 263
11.3.2 层次结构 263
11.3.3 微内核结构 264
11.4 μC/OS-II简介 264
11.4.1 μC/OS-II的主要特点 264
11.4.2 μC/OS-II工作原理 265
11.4.3 μC/OS-II的程序设计模式 266
11.5 μC/OS-II移植 268
11.5.1 移植条件 269
11.5.2 移植步骤 270
11.5.3 内核头文件(OS_CPU.H) 272
11.5.4 与处理器相关的汇编代码(OS_CPU_A.ASM) 273
11.5.5 与CPU相关的C函数和钩子函数(OS_CPU_C.C) 276
第12章 μC/OS-II的内核机制 279
12.1 μC/OS-II内核结构 279
12.1.1 μC/OS-II的任务 279
12.1.2 临界代码 281
12.1.3 任务控制块 282
12.1.4 就绪表 283
12.1.5 任务的调度 284
12.1.6 中断处理 288
12.1.7 时钟节拍 289
12.1.8 任务的初始化 291
12.1.9 任务的启动 293
12.2 μC/OS-II的任务管理 294
12.2.1 创建任务 294
12.2.2 删除任务 298
12.2.3 请求删除任务 300
12.2.4 改变任务优先级 302
12.2.5 挂起任务 305
12.2.6 恢复任务 307
12.2.7 任务调度实例 308
12.3 μC/OS-II的时间管理 315
12.3.1 延时函数 315
12.3.2 恢复延时任务 317
12.3.3 系统时间 318
12.4 任务间的通信与同步 319
12.4.1 事件控制块 319
12.4.2 信号量 323
12.4.3 信号量实例 327
第13章 嵌入式系统综合设计实例 331
13.1 嵌入式系统开发过程 331
13.2 自平衡小车基本功能 333
13.3 硬件结构 334
13.3.1 电气控制系统整体结构 334
13.3.2 加速度计 335
13.3.3 陀螺仪 335
13.4 控制算法设计 335
13.4.1 角度检测算法设计 335
13.4.2 运动控制算法设计 336
附录A 嵌入式系统常用缩写和关于端口读/写的缩写表示 339
附录B Cortex-M3指令清单 346
附录C 51单片机与STM 32微控制器的比较 353
C.1 硬件:寄存器 353
C.2 硬件:存储器空间 353
C.3 硬件:堆栈 354
C.4 硬件:外设 355
C.5 硬件:异常和中断 356
C.6 软件:数据类型 357
C.7 软件:浮点 358
C.8 软件:中断服务程序 359
C.9 软件:非对齐数据 359
C.10 软件:故障异常 360
C.11 软件:设备驱动程序和CMSIS 361
C.12 软件:混用C语言和汇编程序 362
C.13 其他比较 363
附录D STM32实验板原理图 364
参考文献 365