第1章 嵌入式系统概述 1
1.1嵌入式系统简介 1
1.1.1嵌入式系统的定义 2
1.1.2嵌入式系统的特点 2
1.2嵌入式系统芯片 3
1.2.1嵌入式微控制器(Microcontroller Unit, MCU) 3
1.2.2嵌入式微处理器(Microprocessor Unit, MPU) 5
1.2.3嵌入式数字信号处理器(Digital Singnal Processing, DSP) 6
1.2.4嵌入式片上系统(System on Chip, SOC) 7
1.3嵌入式系统硬件和软件系统基本组成 8
1.3.1嵌入式系统硬件基本组成 8
1.3.2嵌入式系统软件系统 11
1.4嵌入式系统开发 12
1.4.1嵌入式系统芯片选型 12
1.4.2嵌入式系统硬件设计 13
1.4.3嵌入式软件开发及编译 14
1.4.4嵌入式系统下载及调试 14
1.5嵌入式系统应用及发展趋势 16
1.5.1各种嵌入式系统芯片的特点 16
1.5.2嵌入式系统芯片的发展趋势 18
第2章ARM芯片及体系架构 20
2.1 ARM芯片主要类别 20
2.2 ARM处理器体系结构 23
2.2.1 ARM处理器体系结构 23
2.2.2 ARM处理器体系结构关系 25
2.3 ARM Cortex-M3简介 27
2.3.1 Cortex-M3功能说明 27
2.3.2 Cortex-M3的总线接口 28
2.3.3寄存器组说明 29
2.3.4操作模式和特权级别 31
2.3.5存储器映射 32
2.3.6流水线 33
2.3.7异常和中断 33
2.3.8存储器保护单元(MPU) 34
2.4 ARM指令汇编 35
2.4.1汇编寻址方式 35
2.4.2 ARM汇编语言 37
第3章STM32微控制器及最小系统 48
3.1 STM32微控制器概述 48
3.1.1 STM32微控制器系列 48
3.1.2 STM32内部资源 49
3.1.3 STM32芯片官方手册 50
3.2 STM32存储及启动 51
3.2.1 STM32总线及存储区映射 51
3.2.2 STM32启动设置 54
3.3 STM32最小系统 56
3.3.1电源 56
3.3.2复位 58
3.3.3时钟源 59
3.3.4最小化系统 61
3.4低功耗模式 62
第4章STM32库函数及程序开发 64
4.1 STM32固件库 64
4.1.1 STM32库结构 64
4.1.2 STM32固件库文件间关系 68
4.2搭建开发环境及程序开发 69
4.2.1搭建开发环境 69
4.2.2程序开发 69
4.2.3时钟设定程序说明 72
4.2.4程序调试和下载 76
第5章GPIO接口 84
5.1 GPIO结构及特点 84
5.1.1 GPIO功能模式 85
5.1.2 GPIO特点 86
5.2 GPIO寄存器和库函数 87
5.2.1 GPIO寄存器 87
5.2.2 GPIO库函数 88
5.3 GPIO应用实例 91
5.3.1按钮控制LED实例 91
5.3.2数码管显示实例 96
5.3.3行列式键盘扫描实例 101
第6章STM32中断 105
6.1 STM32中断通道 106
6.2嵌套向量中断控制器(Nested Vectored Interrupt Controller, NVIC) 109
6.2.1 NVIC寄存器 109
6.2.2系统控制寄存器组(SCB) 110
6.2.3中断和异常处理 111
6.2.4 STM32中断优先级 112
6.2.5 NVIC配置过程 113
6.3 EXTI外部中断 116
6.3.1 EXTI硬件结构 116
6.3.2 EXTI寄存器 118
6.3.3 AFIO寄存器 119
6.3.4 EXTI库函数 121
6.3.5 EXTI中断操作过程 122
6.4 EXTI中断应用实例 122
第7章 串行通信 125
7.1通用同步异步收发器(USART) 126
7.1.1 USART概述 126
7.1.2 USART帧格式 128
7.1.3 USART寄存器 129
7.1.4 USART库函数 130
7.2 USART操作 131
7.2.1 USART发送与接收 131
7.2.2硬件流控制 132
7.2.3奇偶校验 133
7.2.4 USART中断请求 134
7.3 STM32芯片USART其他功能模式及扩展说明 134
7.3.1 USART其他功能模式 134
7.3.2 RS-232接口 136
7.3.3基于串口的无线通信 137
7.4 USART应用实例 139
7.4.1查询传送方式 139
7.4.2中断传送方式 141
7.4.3环形队列串口应用 143
7.5串行同步通信(SPI) 145
7.5.1 SPI接口概述 145
7.5.2 SPI接口库函数 146
7.5.3 SPI接口实例 148
第8章 定时器原理及应用 151
8.1 STM32芯片定时概述 151
8.2高级/通用定时器 153
8.2.1主要寄存器说明 154
8.2.2主要库函数说明 155
8.2.3定时器计数器基本说明 159
8.2.4定时器功能 160
8.2.5计数器功能 162
8.2.6捕获模式功能 163
8.2.7输出PWM模式 166
8.2.8定时器输出比较模式 169
8.2.9 PWM输入捕获模式 171
8.2.10其他功能模块 173
8.3系统滴答定时器(Systick) 175
8.3.1 Systick工作分析及配置 175
8.3.2 Systick实例说明 175
8.4看门狗定时器(WatchDog) 177
8.4.1独立看门狗 177
8.4.2窗口看门狗 178
8.4.3独立看门狗与窗口看门狗区别 180
8.5实时时钟(RTC) 180
第9章ADC原理及应用 185
9.1 ADC概述 185
9.1.1 STM32的ADC功能及结构 185
9.1.2 STM32的ADC工作模式 187
9.1.3 STM32的ADC库函数 192
9.1.4 ADC实例说明 193
第10章DMA方式 196
10.1 DMA概述 196
10.2 DMA库 -函数 198
10.3 DMA实例 200
第11章 总线通信模式 204
11.1 RS485总线 204
11.2 I2C总线 205
11.3 CAN总线 208
第12章 其他接口模式 210
12.1典型并行接口 210
12.1.1静态存储器控制器(FSMC) 210
12.1.2 LCD接口 211
12.2 USB全速设备接口(USB) 214
第13章μC/OS- Ⅱ嵌入式操作系统 216
13.1实时操作系统 216
13.1.1实时系统的属性和指标 216
13.1.2实时系统的分类 217
13.1.3 RTOS常用的调度 217
13.1.4临界资源和代码临界区 218
13.1.5优先级反转和对策 218
13.2 μC/OS-Ⅱ嵌入式操作系统 218
13.2.1 μC/OS的性能特点 219
13.2.2 μC/OS-Ⅱ代码结构 219
13.2.3 μC/OS-Ⅱ的启动过程 221
13.3 μC/OS- Ⅱ移植 221
13.3.1移植规划 221
13.3.2编写OS_CPU.H 222
13.3.3编写OS_CPU_C.C 223
13.3.4编写OS_CPU_A.ASM 224
13.4 μC/OS- Ⅱ内核结构 225
13.4.1μ/OS-Ⅱ的任务状态 225
13.4.2任务控制块OS_TCB 226
13.4.3 μC/OS-Ⅱ的任务调度 228
13.4.4μ/OS-Ⅱ的任务切换 230
13.4.5μ/OS- Ⅱ的中断处理 230
13.5和任务管理有关函数 231
13.5.1创建任务 231
13.5.2 μC/OS-Ⅱ时间管理 232
13.5.3事件控制块 234
13.5.4互斥信号量mutex 235
13.5.5信号量 240
13.5.6事件标志组 249
13.5.7消息邮箱 253
13.5.8消息队列 259
13.5.9动态内存管理 265
第14章 综合设计实例 268
14.1嵌入式系统开发流程 268
14.2智能小车功能说明 269
14.3硬件设计及实现 270
14.3.1电源硬件设计 270
14.3.2主控芯片电路设计 271
14.3.3伺服电机模块 271
14.3.4超声波测距电路 275
14.3.5超声波模块舵机控制电路 276
15.3.6 3.3 V和5V电平转换电路 277
14.4控制算法设计及实现 277
14.4.1小车运动模型构建 277
14.4.2 PID控制 280
14.4.3模糊决策算法 282
14.5软件设计及实现 285
14.5.1超声波传感器检测主要程序 287
14.5.2舵机控制主要程序 288
14.5.3模糊决策主要程序 289
14.5.4伺服电机主要程序 292
14.5.5 PID控制主要程序 294
14.5.6主程序以及其他程序 295
14.6基于μC/OS-Ⅱ嵌入式操作系统设计及实现 297