第1章 ARM Cortex-M3核介绍 1
1.1 Cortex-M3主要特性 1
1.2 典型M3核处理器特性 3
1.2.1 命名规则 4
1.2.2 产品功能和外设配置 4
习题 5
第2章 开发环境搭建 6
2.1 MDK安装 6
2.2 新建工程 9
2.3 采用ST-Link调试仿真代码 15
习题 19
第3章 基本I/O端口控制 20
3.1 MDK新建工程 20
3.2 MDK工程配置 27
3.3 寄存器法操作代码分析 30
3.4 时钟配置 30
3.4.1 时钟树 31
3.4.2 时钟源 32
3.4.3 APB2外设时钟使能寄存器(RCC_APB2ENR) 33
3.5 I/O端口配置 34
3.5.1 I/O基本情况 34
3.5.2 GPIO配置寄存器描述 35
3.5.3 端口输出数据寄存器 37
3.6 用库函数操作流水灯 37
3.6.1 GPIO_Init函数 39
3.6.2 RCC_APB2PeriphClockCmd 41
3.6.3 控制I/O输出电平 42
3.6.4 LED.h文件 43
3.6.5 软件调试易现问题 44
3.7 使用库函数法控制数码管 46
3.7.1 数码管基础知识 46
3.7.2 硬件电路设计 47
3.7.3 软件说明 47
3.8 简单按键输入 50
习题 52
第4章 中断 53
4.1 STM32中断和异常 53
4.2 STM32中断相关的基本概念 55
4.2.1 优先级 55
4.2.2 中断控制器NVIC 56
4.2.3 NVIC的优先级组 58
4.3 外部中断 58
4.3.1 外部中断基本情况 59
4.3.2 使用外部中断的基本步骤 60
习题 64
第5章 串口通信 65
5.1 串口通信基础 65
5.1.1 基本概念 65
5.1.2 常用的串行通信接口 66
5.1.3 应用串行通信的数据采集结构 70
5.2 STM32串口操作 71
5.2.1 寄存器方式操作串口 72
5.2.2 库函数方式操作串口 77
习题 82
第6章 直接寄存器访问 83
6.1 DMA基础知识 83
6.2 STM32的DMA操作 85
6.2.1 寄存器方式操作DMA 85
6.2.2 库函数方式操作DMA 90
6.2.3 DMA操作实例 93
习题 96
第7章 模拟/数字转换器 97
7.1 ADC基础知识 97
7.1.1 ADC主要特性 97
7.1.2 ADC框图及引脚分布 98
7.1.3 通道选择 99
7.1.4 ADC的转换模式 99
7.1.5 ADC寄存器和固件库函数列表 100
7.2 STM32ADC操作 102
7.2.1 寄存器方式操作ADC 102
7.2.2 库函数方式操作ADC 111
7.2.3 ADC操作实例 115
习题 118
第8章 定时器 119
8.1 定时器基础知识 119
8.1.1 高级定时器 119
8.1.2 基本定时器 120
8.1.3 通用定时器 120
8.2 STM32定时器操作 121
8.2.1 寄存器方式操作定时器 121
8.2.2 库函数方式操作定时器 127
8.2.3 定时器操作实例 130
习题 131
第9章 CAN总线设计 132
9.1 CAN总线基本工作原理 132
9.2 CAN协议的特点 133
9.3 CAN协议通信过程 134
9.4 CAN的报文格式 135
9.4.1 数据帧 136
9.4.2 遥控帧 137
9.4.3 错误帧 138
9.4.4 过载帧 139
9.4.5 帧间隔 140
9.4.6 优先级的决定 141
9.5 CAN总线错误处理机制 141
9.5.1 错误状态 142
9.5.2 错误检测 143
9.6 同步 144
9.6.1 同步类型 144
9.6.2 同步原则 144
9.7 CAN总线拓扑结构 145
9.7.1 STM32的CAN通信模块 145
9.7.2 CAN控制器MCP2515介绍 146
9.8 CAN通信的软件设计 148
9.8.1 系统程序流程 148
9.8.2 系统接收发送中断处理 149
9.8.3 CAN总线初始化配置 149
9.8.4 报文的发送 151
9.8.5 报文的接收 152
9.9 CAN通信示例 153
习题 157
第10章 倒立摆设计 158
10.1 设计内容与实现指标 158
10.1.1 倒立摆的选择 158
10.1.2 系统设计指标 159
10.2 系统方案确定 160
10.2.1 系统结构组成 160
10.2.2 系统模型分析 160
10.2.3 系统控制方案确定 164
10.3 系统硬件设计 165
10.4 电机的选择及驱动电路的设计 166
10.4.1 电机的选择 166
10.4.2 电机驱动电路的设计 166
10.5 测量电路设计 169
10.5.1 摆杆角度测量电路的设计 169
10.5.2 旋臂位置测量电路的设计 170
10.6 通信电路的设计 172
10.6.1 上位机通信电路的设计 172
10.6.2 无线传输电路的设计 174
10.7 辅助电路设计 175
10.7.1 语音提示电路的设计 175
10.7.2 电源电路的设计 177
10.8 系统软件设计 181
10.8.1 系统控制程序设计 181
10.8.2 起摆程序设计 182
10.8.3 PID控制程序设计 183
10.8.4 电机驱动程序设计 185
10.8.5 上位机通信程序设计 186
10.8.6 无线通信程序设计 188
10.9 作品的制作与调试 189
10.9.1 倒立摆机械结构的制作问题 189
10.9.2 PCB设计应注意的问题 189
10.9.3 电路板的制作问题 190
10.10 PID参数的整定 190
10.10.1 比例参数整定 191
10.10.2 积分参数整定 191
10.10.3 微分参数整定 191
习题 192
第11章 智能小车设计 193
11.1 硬件电路设计 193
11.1.1 硬件系统方案设计 193
11.1.2 最小系统电路设计 194
11.1.3 电源电路设计 195
11.1.4 电机驱动电路设计 197
11.1.5 环境检测传感器电路设计 199
11.2 人机交互电路设计 201
11.2.1 OLED显示电路设计 201
11.2.2 红外遥控电路设计 201
11.2.3 蜂鸣器提示电路设计 202
11.3 总体软件设计 202
11.3.1 道路基准采集模式软件 202
11.3.2 PID寻迹模式软件 203
11.3.3 迷宫模式软件 203
11.3.4 OLED显示软件设计 204
11.4 PID控制软件设计 205
11.4.1 PID介绍 205
11.4.2 比例(P)控制器 206
11.4.3 比例积分(PI)控制器 206
11.4.4 比例微分(PD)控制器 207
11.4.5 比例积分微分(PID)控制器 207
11.4.6 PID寻迹 208
11.5 迷宫算法设计 210
11.5.1 左手法 210
11.5.2 迷宫搜索 211
11.5.3 迷宫最短路径算法 211
11.6 设计测量方法与数据处理 212
11.6.1 传感器分布 212
11.6.2 五路模拟传感器数据测量 212
11.7 传感器软件滤波 214
11.7.1 软件滤波处理介绍 214
11.7.2 软件滤波的方法 214
11.8 调试方法 215
11.8.1 PID参数调试 215
11.8.2 迷宫模式调试 216
习题 217
第12章 平衡车设计 218
12.1 硬件电路设计 218
12.1.1 硬件系统方案设计 218
12.1.2 环境检测传感器电路设计 219
12.2 人机交互电路设计 220
12.3 MPU-6050使用方法 222
12.3.1 引脚说明 222
12.3.2 SMPRT_DIV寄存器 222
12.3.3 CONFIG寄存器 223
12.3.4 GYRO_CONFIG寄存器 224
12.3.5 ACCEL_CONFIG寄存器 224
12.3.6 加速度计测量寄存器 225
12.3.7 TEMP_OUT_H和TEMP_OUT_L寄存器 226
12.3.8 陀螺仪测量寄存器 226
12.3.9 PWR_MGMT_1寄存器 227
12.3.10 WHO_AM_I寄存器 228
12.4 总体软件设计 228
12.4.1 车身状态采集模式软件 228
12.4.2 PID车身保持模式软件 231
12.4.3 人机交互模式软件设计 234
12.4.4 卡尔曼滤波算法 237
习题 239
第13章 电子秤设计 240
13.1 设计指标 240
13.2 设计方案 240
13.3 硬件电路设计说明 241
13.3.1 主控制器相关电路 241
13.3.2 TFT液晶屏相关电路设计 242
13.3.3 AD芯片HX711相关电路设计 243
13.3.4 WT588D语音模块相关电路设计 244
13.3.5 称重传感器相关电路设计 246
13.4 软件设计思路及代码分析 247
13.4.1 TFT触控液晶模块部分 247
13.4.2 WT588D语音模块部分 248
13.4.3 HX711芯片部分 249
13.4.4 DS18B20芯片部分 251
13.4.5 数据计算部分 254
习题 255
第14章 井下通信分站设计 256
14.1 硬件电路设计 256
14.1.1 监控分站主要设计目标及参数 256
14.1.2 硬件电路设计方案 257
14.2 软件方案设计 260
14.2.1 软件总体程序的思路 260
14.2.2 RS485接口的使用及程序流程 264
14.2.3 CAN数据传输 267
14.2.4 OLED显示 270
14.2.5 键盘输入 273
习题 275
第15章 无线电能功率传输系统的设计 276
15.1 设计内容与实现指标 276
15.1.1 设计内容 276
15.1.2 系统设计指标 277
15.2 无线电能传输的基本原理分析 277
15.2.1 无线电能传输的耦合方式 277
15.2.2 磁谐振耦合式无线电能传输的基本原理 279
15.2.3 磁场谐振式无线电能传输系统的组成 280
15.2.4 实现传输的关键装置 281
15.3 无线电能传输的特性 282
15.3.1 频率特性对无线电能传输系统的影响 282
15.3.2 能量发射线圈设计对无线电能传输系统的影响 284
15.3.3 电容补偿对无线能量传输系统性能的影响 287
15.4 系统方案确定及电路设计 288
15.4.1 系统结构组成 288
15.4.2 主要拓扑电路的选择与设计 289
15.4.3 MOS管驱动设计 291
15.4.4 线圈和电容的设计 293
15.4.5 接收端高频整流的设计 294
15.4.6 控制电路的设计 295
15.4.7 程序的设计 295
15.5 调试与验证 298
15.5.1 系统的调试 298
15.5.2 测量结果与结论分析 298
习题 300
第16章 四旋翼飞行器设计 301
16.1 四旋翼飞行器的结构 301
16.2 四旋翼飞行器的运动控制方法 301
16.3 四旋翼飞行器各部分的工作原理 302
16.3.1 飞行姿态与升力关系 302
16.3.2 飞行姿态的测量 304
16.3.3 加速度传感器工作原理及角度测量 304
16.3.4 陀螺仪传感器工作原理及角度测量 305
16.3.5 磁力计传感器工作原理及测量方法 305
16.4 硬件设计 306
16.4.1 总体设计 306
16.4.2 飞行器主控电路最小系统设计 308
16.4.3 姿态传感器模块 310
16.4.4 无线通信模块 313
16.4.5 定高模块 315
16.4.6 电机及驱动模块 319
16.4.7 遥控器模块 321
16.4.8 电源模块选择 326
16.4.9 四轴飞行器的组装 326
16.5 软件设计 328
16.5.1 软件预备知识 328
16.5.2 主控程序初始化设置及说明 336
16.5.3 姿态传感器软件设计 343
16.5.4 气压计软件设计 354
16.5.5 遥控器软件设计 364
16.6 调试、问题解析及改进方向随想 375
习题 375
第17章 案例设计 376
17.1 STM32的无线传输系统 376
17.1.1 设计任务 376
17.1.2 系统结构组成 376
17.1.3 主要设计思路 377
17.2 风力摆控制系统设计 377
17.2.1 设计任务 378
17.2.2 系统结构组成 378
17.2.3 主要设计思路 379
习题 380
参考文献 381