RoboMaster 开发板 C 型嵌入式软件
教程文档
v1.0 2020.01
前置参考阅读
1. 《RoboMaster 开发板 C 型用户手册》
2. C 语言相关书籍
3. 《ARM Cortex-M3 与 Cortex-M4 权威指南》
4. STM32F407IG 相关数据手册
5. freeRTOS 官网相关文档
建议用户首先阅读《RoboMaster 开发板 C 型用户手册》,了解 RoboMaster 开发板 C 型(以下简称开发
板 C 型)相关功能以及使用方法,正确使用开发板 C 型的相关接口,避免错误的使用方法造成开发板 C
型的损坏;开发板 C 型的例程所使用的编程语言为 C 语言,建议用户学习 C 语言的基本语法,本文档没
有针对 C 语言进行系统的讲解;《ARM Cortex-M3 与 Cortex-M4 权威指南》、STM32F407IG 相关数据
手册和 freeRTOS 官网相关文档作为参考资料,在必要时候可以进行查阅。
修改日志
日期
版本 修改记录
2020.01.09
V1.0 首次发布。
目录
前置参考阅读 .................................................................................................................... 2
修改日志 ........................................................................................................................... 2
0. 开发板 C 型,cubeMX 与 keil 入门 .............................................................................. 12
0.1 知识要点 .................................................................................................................. 12
0.2 课程内容 .................................................................................................................. 12
0.3 基础学习 .................................................................................................................. 12
0.4 程序学习 .................................................................................................................. 14
0.4.1 软件环境 ........................................................................................................ 14
0.4.2 cubeMX 新建工程 .......................................................................................... 15
0.4.3 keil 软件简易入门 ........................................................................................... 18
0.4.4 Keil 的调试模式 .............................................................................................. 22
0.5 RoboMaster 机器人功能简介 ................................................................................... 24
0.6 课程总结 .................................................................................................................. 24
1. 点亮 LED ................................................................................................................. 25
1.1
1.2
1.3
知识要点 .......................................................................................................... 25
课程内容 .......................................................................................................... 25
基础学习 .......................................................................................................... 25
1.3.1 LED 灯基本知识 ............................................................................................. 25
1.4
程序学习 .......................................................................................................... 26
1.4.1
cubeMX 中配置 GPIO 基本操作 ............................................................... 26
1.4.2
HAL_GPIO_WritePin 函数讲解 ................................................................ 27
1.4.3 程序流程 ................................................................................................... 28
1.4.4 效果展示 ................................................................................................... 29
1.5
进阶学习 .......................................................................................................... 30
1.5.1 三极管的通断特性 ..................................................................................... 30
1.5.2
LED 的下拉电阻........................................................................................ 30
1.5.3 硬件原理图上的限流电阻 .......................................................................... 32
1.6
课程总结 .......................................................................................................... 32
2. 闪烁 LED ................................................................................................................. 34
2.1
2.2
2.3
知识要点 .......................................................................................................... 34
课程内容 .......................................................................................................... 34
基础学习 .......................................................................................................... 34
2.3.1 GPIO 的翻转速度 ........................................................................................... 34
© 2020 大疆创新 版权所有 3
2.4
程序学习 .......................................................................................................... 36
2.4.1 计数延时介绍 ............................................................................................ 36
2.4.2
nop 延时介绍 ............................................................................................ 37
2.4.3 滴答计时器介绍以及 HAL_Init 初始化 ...................................................... 38
2.4.4
HAL_Delay 介绍 ....................................................................................... 40
2.4.5
HAL_GPIO_TogglePin 介绍 ..................................................................... 41
2.4.6 程序流程 ................................................................................................... 42
2.4.7 效果展示 ................................................................................................... 43
2.5
课程总结 .......................................................................................................... 44
3. 定时器闪烁 LED ...................................................................................................... 45
3.1
3.2
3.3
知识要点 .......................................................................................................... 45
课程内容 .......................................................................................................... 45
基础学习 .......................................................................................................... 45
3.3.1 定时器讲解................................................................................................ 45
3.3.2 中断讲解 ................................................................................................... 46
3.4
程序学习 .......................................................................................................... 47
3.4.1 定时器在 cubeMX 中配置 ......................................................................... 47
3.4.2 中断优先级讲解 ........................................................................................ 50
3.4.3
cubeMX 中的中断配置以及中断函数管理 ................................................ 51
3.4.4 定时器回调函数介绍 ................................................................................. 53
3.4.5
HAL_TIM_Base_Start 函数 ...................................................................... 54
3.4.6 程序流程 ................................................................................................... 55
3.4.7 效果展示 ................................................................................................... 56
3.5
进阶学习 .......................................................................................................... 56
3.5.1 APB 总线计算定时器定时时间 ....................................................................... 56
3.6
课程总结 .......................................................................................................... 59
4.
PWM 控制 LED 的亮度 ........................................................................................... 60
4.1
4.2
4.3
知识要点 .......................................................................................................... 60
课程内容 .......................................................................................................... 60
基础学习 .......................................................................................................... 60
4.3.1
PWM 基本知识 ......................................................................................... 60
4.3.2
aRGB 三原色 ............................................................................................ 61
4.4
程序学习 .......................................................................................................... 61
4.4.1
PWM 在 cubeMX 中配置 .......................................................................... 61
4 © 2020 大疆创新 版权所有
4.4.2
PWM 配置介绍 ......................................................................................... 63
4.4.3
HAL_TIM_PWM_Start 函数介绍 .............................................................. 64
4.4.4 程序流程 ................................................................................................... 66
4.4.5 效果展示 ................................................................................................... 67
4.5
课程总结 .......................................................................................................... 67
5. 常见的 PWM 设备 ................................................................................................... 68
5.1
5.2
5.3
知识要点 .......................................................................................................... 68
课程内容 .......................................................................................................... 68
基础学习 .......................................................................................................... 68
5.3.1 蜂鸣器 ....................................................................................................... 68
5.3.2 舵机的控制................................................................................................ 69
5.4
程序学习 .......................................................................................................... 71
5.4.1 蜂鸣器的 PWM 在 cubeMX 中配置 ........................................................... 71
5.4.2 蜂鸣器的程序流程 ..................................................................................... 73
5.4.3 效果展示 ................................................................................................... 76
5.4.4 舵机的 PWM 在 cubeMX 中配置 .............................................................. 76
5.4.5 舵机主程序讲解 ........................................................................................ 79
5.4.6 舵机效果演示 ............................................................................................ 80
5.5
5.6
课程总结 .......................................................................................................... 81
上一节作业讲解................................................................................................ 82
程序流程 .................................................................................................................. 82
6. 按键的外部中断 ....................................................................................................... 85
6.1
6.2
6.3
知识要点 .......................................................................................................... 85
课程内容 .......................................................................................................... 85
基础学习 .......................................................................................................... 85
6.3.1 按键原理图介绍 ........................................................................................ 85
6.3.2 按键软件消抖 ............................................................................................ 86
6.3.3 外部中断 ................................................................................................... 87
6.4
程序学习 .......................................................................................................... 87
6.4.1 外部中断在 cubeMX 中的配置 .................................................................. 87
6.4.2
HAL_GPIO_ReadPin 函数介绍 ................................................................ 89
6.4.3 中断回调函数介绍 ..................................................................................... 89
6.4.4 程序中的前后台 ........................................................................................ 90
6.4.5 程序流程 ................................................................................................... 90
© 2020 大疆创新 版权所有 5
6.4.6 效果展示 ................................................................................................... 91
6.5
课程总结 .......................................................................................................... 92
7.
ADC 采样电池电压 .................................................................................................. 93
7.1
7.2
7.3
知识要点 .......................................................................................................... 93
课程内容 .......................................................................................................... 93
基础学习 .......................................................................................................... 93
7.3.1
ADC 原理介绍 ........................................................................................... 93
7.3.2 电阻分压电路介绍 ..................................................................................... 95
7.4
程序学习 .......................................................................................................... 96
7.4.1
ADC 在 cubeMX 中的配置 ........................................................................ 96
7.4.2 内部 VREFINT 电压的使用 ....................................................................... 98
7.4.3
ADC 采样相关函数介绍 ............................................................................ 99
7.4.4 程序流程 ................................................................................................. 101
7.4.5 效果展示 ................................................................................................. 103
7.5
7.6
进阶学习 ........................................................................................................ 104
课程总结 ........................................................................................................ 106
8. 串口收发 ................................................................................................................ 107
8.1
8.2
8.3
知识要点 ........................................................................................................ 107
课程内容 ........................................................................................................ 107
基础学习 ........................................................................................................ 107
8.3.1 串口接收中断与空闲中断 ........................................................................ 107
8.4
程序学习 ........................................................................................................ 108
8.4.1 串口在 cubeMX 中配置 ........................................................................... 108
8.4.2 串口接收中断与空闲中断 ........................................................................ 110
8.4.3 串口发送函数与中断函数 ........................................................................ 110
8.4.4 程序流程 ................................................................................................. 111
8.4.5 效果展示 ................................................................................................. 112
8.5
进阶学习 ........................................................................................................ 114
8.5.1
APB 时钟计算串口波特率 ....................................................................... 114
8.6
课程总结 ........................................................................................................ 114
9. 串口打印遥控器数据 ............................................................................................. 116
9.1
9.2
9.3
知识要点 ........................................................................................................ 116
课程内容 ........................................................................................................ 116
基础学习 ........................................................................................................ 116
6 © 2020 大疆创新 版权所有
9.3.1
DMA 功能介绍 ........................................................................................ 116
9.3.2
DBUS 协议介绍 ...................................................................................... 116
9.4
程序学习 ........................................................................................................ 117
9.4.1 串口发送的 DMA 配置 ............................................................................ 117
9.4.2
printf 函数实现过程 ................................................................................. 120
9.4.3 串口的 DMA 接收与发送配置 ................................................................. 120
9.4.4 程序流程 ................................................................................................. 127
9.4.5 效果展示 ................................................................................................. 127
9.5
课程总结 ........................................................................................................ 129
10.
Flash 读写 ............................................................................................................. 130
10.1 知识要点 ........................................................................................................ 130
10.2 课程内容 ........................................................................................................ 130
10.3 基础学习 ........................................................................................................ 130
10.3.1 stm32 的 flash 介绍 ................................................................................ 130
10.4 程序学习 ........................................................................................................ 131
10.4.1
flash 擦除函数介绍 ................................................................................. 131
10.4.2
flash 写入函数介绍 ................................................................................. 131
10.4.3
flash 读取介绍 ......................................................................................... 132
10.4.4
flash 相关操作函数 ................................................................................. 133
10.4.5 程序流程.............................................................................................. 134
10.4.6 效果展示.............................................................................................. 134
10.5 进阶学习 ........................................................................................................ 136
10.5.1
flash 页分区 ............................................................................................ 136
10.5.2 boot 作用 ................................................................................................ 137
10.6 课程总结 ........................................................................................................ 138
11.
I2C 读取 IST8310 .................................................................................................. 139
11.1 知识要点 ........................................................................................................ 139
11.2 课程内容 ........................................................................................................ 139
11.3 基础学习 ........................................................................................................ 139
11.3.1
I2C 简介 .................................................................................................. 139
11.3.2 磁力计简介.............................................................................................. 140
11.4 软件学习 ........................................................................................................ 141
11.4.1 硬件接线 ................................................................................................. 141
11.4.2
I2C 在 cubeMX 中的配置 ........................................................................ 141
© 2020 大疆创新 版权所有 7
11.4.3 主要函数介绍 .......................................................................................... 143
11.4.4 程序流程 ................................................................................................. 147
11.4.5 效果展示 ................................................................................................. 148
11.5 进阶学习 ........................................................................................................ 148
11.5.1
IST8310 的读写过程 ............................................................................... 148
11.5.2
IST8310 的寄存器信息 ........................................................................... 154
11.6 课程总结 ........................................................................................................ 159
12. OLED 显示 ............................................................................................................ 160
12.1 知识要点 ........................................................................................................ 160
12.2 课程内容 ........................................................................................................ 160
12.3
12.3 基础学习 ................................................................................................ 160
12.3.1 OLED 简介 .............................................................................................. 160
12.4 软件学习 ........................................................................................................ 161
12.4.1 硬件接线.............................................................................................. 161
12.4.2 cubeMX 配置过程 ................................................................................... 162
12.4.3 主要函数介绍 ...................................................................................... 164
12.4.4 程序流程.............................................................................................. 171
12.4.5 效果展示.............................................................................................. 172
12.5 进阶学习 ........................................................................................................ 173
12.5.1 OLED 通信过程 ...................................................................................... 173
12.5.2 OLED 初始化配置 ................................................................................... 174
12.6 课程总结 ........................................................................................................ 175
13. BMI088 传感器 ...................................................................................................... 176
13.1 知识要点 ........................................................................................................ 176
13.2 课程内容 ........................................................................................................ 176
13.3 基础学习 ........................................................................................................ 176
13.3.1 陀螺仪简介 .......................................................................................... 176
13.3.2 加速度计简介 ...................................................................................... 176
13.3.3 SPI 协议简介 .......................................................................................... 177
13.4 程序学习 ........................................................................................................ 179
13.4.1 SPI 在 cubeMX 中的配置 ........................................................................ 179
13.4.2 BMI088 的寄存器简介 ............................................................................ 181
13.4.3 BMI088 读取函数介绍 ............................................................................ 182
13.4.4 程序流程.............................................................................................. 185
8 © 2020 大疆创新 版权所有