文章目录
0 电控介绍0.1 电控学习内容0.2 物资准备1 C语言学习1.1 学习资料1.2 学习规划1.2.1 基础1.2.2 函数1.2.3 数组1.2.4 进阶2 Arduino培养方案2.1 Arduino简介2.2 学习资料2.3 学习规划2.3.1 点灯2.3.2 中断2.3.3 PWM/模拟输入2.3.4 串口通讯3 STM32培养方案3.1 STM32简介3.2 学习资料3.3 安装教程3.3.1 CubeMX3.3.2 Keil MDK53.4 学习规划3.4.1 点灯/中断3.4.2 定时器/PWM3.4.3 串口通讯3.4.4 (拓展)I2C3.4.5 (拓展)SPI3.4.6 (拓展)CAN4 (拓展)RM电控入门0 电控介绍
0.1 电控学习内容
电控组主要负责的是机器人的控制,包括嵌入式开发、通信、电机选型与驱动以及控制算法等。目前我队主要使用的主控芯片型号是STM32F4系列,编程语言为C,硬件外设为HAL库。
0.2 物资准备
预备物资:
可以自行购买,薪火培训时也会发放。
1 C语言学习
1.1 学习资料
C语言是理工科的大学必修课,也是电控方向的基础,因为目前C语言是基于单片机的嵌入式开发的主要语言。
IDE:Dev C++(仅作C/C++学习使用,后期开发会更换IDE)。
慕课链接:
/learn/249
博客链接:
/qq_23079443/article/details/81108901
以上给出的博客是和慕课配套的,我们在”1.2 学习规划“中,对整篇博客进行了参考性的分解,每一个Step大约可用3天完成,按照计划同步学习慕课和博客,完成相关练习,C语言的基础入门就差不多完成了。
补充资料:强烈推荐浙江大学翁恺老师的《C语言程序设计》和《C语言程序设计进阶》,讲解清晰细致,习题量和难度也适中,在中国大学mooc、网易云课堂等主流中文mooc网站均能找到。
1.2 学习规划
1.2.1 基础
C语言概览。重点看规范文档,掌握各种语句和数据类型(第1~2章)。了解各种运算符(第3章)。学习顺序、选择、循环3种基本程序结构,掌握if-else、for、while、do-while、switch-case、break、continue等语句的用法,goto有所了解即可(第4章)。1.2.2 函数
自创函数+参数类型+返回值(5.1~5.6章节)。局部与全局变量+变量存储类型+递归函数+内外部函数(5.7~5.13章节)。多做练习,熟练使用函数简化程序,降低模块耦合度。1.2.3 数组
学习遍历数组并实现简单应用(6.1~6.5章节)。字符串与数组处理(6.6~6.8章节)。多维数组应用和练习(6.9~6.12章节)。1.2.4 进阶
了解指针及其应用。了解结构体、链表等结构。如有余力,可以学习一点点数据结构与算法。2 Arduino培养方案
2.1 Arduino简介
Arduino是一款便捷灵活、方便上手的开源电子原型平台。有同名的开发环境Arduino,库函数丰富且实用,不必完全了解原理也可以快速上手做项目,非常适合新手入门单片机。我们希望通过短期的教程,让大家掌握点灯、流水灯、呼吸灯、模拟输入、中断、串口通信等基本操作,以及PWM等基本原理,体验开发过程。
2.2 学习资料
本方案”2.3 学习规划“中主要使用/circuit/2937#/details这套Arduino入门教程,目录如下图所示。
补充资料:
w3cschoo的arduino教程,文档风格的目录,博客风格的叙述,合适入门:/arduino/Arduino中文社区:/forum.phpCSDN,中文IT技术社区,干货不少,不仅仅是arduino,遇到各种技术问题都可以试着搜索一下:/ 与非网:/?utm_campaign=dianzixinxigang&utm_medium=navi&utm_source=cirmall&utm_content=eefocus&utm_term=eefocus百度、谷歌、b站(视频教程)、有道词典(看文档/代码时查单词)等工具,熟练使用搜索引擎是非常重要的技能。
2.3 学习规划
以下每个模块大约用3天时间可以完成,主要参考”2.2 学习资料“中给出的《Arduino入门教程》。
2.3.1 点灯
安装软件。阅读以下材料,了解基础知识。Arduino 菜鸟通俗版解读系列(1)数字接口/模拟接口
/p/839e8f58335c
Arduino菜鸟通俗版解读系列(2)数字接口/模拟接口
/p/db31d92689af
Arduino菜鸟通俗版解读系列(3)库
/p/9ea91a63181f
《Arduino程序设计基础》函数参考文档(简要浏览即可,不需要完全记住)
/?file=home-首页
Arduino各开发板的比较
/thread-42417-1-1.html阅读《Arduino入门教程》中的(1)~(3)篇,并完成这3个实验。
2.3.2 中断
按键开关控制:阅读《Arduino入门教程(4)》,完成互动交通信号灯。体验外部中断:阅读博客《各种Arduino外部中断程序》,链接为/qq_35576988/article/details/55001384,并完成博客中的示例。体验定时器中断:阅读博客《Arduino定时器中断 外部中断》,链接为/qq_39591322/article/details/89155079。2.3.3 PWM/模拟输入
体验PWM:阅读《Arduino入门教程(5)》,完成呼吸灯实验。了解PWM原理:阅读以下博客。Arduino笔记3·PWM的原理和效果
/3137.html
Arduino系列教程之 – PWM的秘密
/xuanyuanlei1020/article/details/49902779 学习模拟输入:阅读以下资料,并按步骤完成实验。
Arduino笔记2:模拟信号输入及实例(关于SerialChart的部分可以不看)
/3049.html
Arduino内置教程-模拟-模拟输入(原理图不作要求/archives/07/336.html)
2.3.4 串口通讯
阅读以下材料并完成实验,了解一些关于通信的基础知识。Arduino基础入门篇23—串口通讯
/TonyIOT/article/details/82848062
Arduino菜鸟通俗版解读系列(4)串口通信—USART
/p/28ad2e68d7be
Arduino菜鸟通俗版解读系列(7)串行通信,串口通信,波特率
/p/d805edf60815
3 STM32培养方案
3.1 STM32简介
STM32是加入机器人队后主要使用的开发板,它拥有比Arduino更强大的性能。STM32的学习是本次培训计划的重点和难点,之前C语言和Arduino的学习即是为STM32的学习作铺垫。
3.2 学习资料
前期主要依靠”微雪课堂“、洋桃视频等,后期更多依赖开发手册和CSDN论坛。
微雪课堂STM32CubeMX系列教程:
/study/article-629-1.html
洋桃电子:
/video/BV1MW411q7Jn?from=search&seid=8564727660527860260
硬石开发手册:
/download/weixin_45839498/12350816?utm_source=bbsseo
补充资料:b站搜索正点原子、野火的stm32视频教程。
3.3 安装教程
3.3.1 CubeMX
我们会先用CubeMX生成基础的工程,并在此基础上编写自己的代码。CubeMX安装教程可查看链接:/ybhuangfugui/article/details/52225736
3.3.2 Keil MDK5
请按如下顺序安装:
安装MDK-523.exe安装Keil.STM32F1xx_DFP.1.1.0.pack和Keil.STM32F4xx_DFP.2.12.0.pack使用破解机破解keil安装STLINK驱动安装JLINK驱动(即文件Setup_JLink_V496.exe)
3.4 学习规划
以下每个模块大约可用3天时间完成。
3.4.1 点灯/中断
阅读以下内容,学习嵌入式开发所需的c语言基础。关于嵌入式开发的C语言基础总结
/m0_37697335/article/details/79515389
洋桃视频前6步,链接在”3.2 学习资料“中给出。点亮第一盏灯,可参考以下视频(视频来源于某位不愿透露姓名的dalao扬神)。
/video/av26331717体验按键的外部中断:
(1)基础任务:使用按键的外部中断控制LED灯,使得按一下按键/huazhen1234/article/details/44985071LED灯亮灭3次;
(2)进阶任务:在面包板和LED灯的外设下,做一个依次亮灭的流水灯。
可参考以下资料:
微雪课堂的GPIO和外部中断篇(重点看CubeMX的配置和生成代码,对于优先级、寄存器参数、汇编底层可以只有个大概的了解,链接在”3.2 学习资料“中给出)
硬石开发手册(浏览相关内容即可)
3.4.2 定时器/PWM
阅读微雪课堂的基本定时器篇,并按步骤完成实验,通过定时器中断控制LED灯闪烁,间隔1s。硬件生成PWM呼吸灯:(1)基础任务:使LED灯每3秒呼吸一次;
(2)进阶任务:完成依次亮灭的流水灯,但以呼吸灯的形式亮灭。
可参考以下资料:
微雪课堂的PWM篇(重点看配置和代码)
扬神的示例视频
/video/av29353267/?p=2
补充资料:定时器模拟产生PWM也可以实现呼吸灯,可参考下面这篇博客。
STM32学习笔记一(LED,跑马灯,呼吸灯)/huazhen1234/article/details/44985071
3.4.3 串口通讯
了解串口通信,利用之前的按键中断发送中断信号,并将收到的信息通过串口发送给电脑,可参考以下资料。STM32 USART同步异步串行通讯
/view/5cc4dc75e87101f69e3195f1.html?tdsourcetag=s_pcqq_aiomsg&qq-pf-to=pcqq.c2c
微雪课堂的串行通信篇(按照教程操作即可,主要熟悉串口的发送接收函数,以及中断函数)
3.4.4 (拓展)I2C
了解STM32 io口模式。STM328种IO口模式区别
/li707414287/article/details/104579505了解I2C通讯协议。
I2C通讯协议介绍
/weixin_34044273/article/details/92024131直观上了解读写流程。
I2C总线和SPI总线
/u010667082/article/details/47039951I2C不但可以用硬件生成,也可以用软件模拟。尝试用I2C读取MPU6050的数据,并利用串口将数据发送给电脑,可参考以下资料:
微雪课堂的I2C篇(硬件生成参考)
IIC协议解释(软件模拟参考)
/cheerk/article/details/80542332
STM32 IO口模拟I2C+驱动MPU6050
/Zach_z/article/details/75331275
3.4.5 (拓展)SPI
可参考微雪课堂、开发手册,以及以下博客。【STM32】SPI的基本原理、库函数(SPI一般步骤)
/qq_38410730/article/details/80318821
STM32—cubeMX+HAL库的SPI接口使用
/u014470361/article/details/79015712
3.4.6 (拓展)CAN
可参考微雪课堂、开发手册,以及以下博客。CAN通信详解
/hanchaoman/article/details/70059072
stm32的can总线理解及应用——程序对应stm32f103系列
/qq_29413829/article/details/53230716
使用STM32F103做CAN的收发通信
/qq_36355662/article/details/80607453
STM32 CAN总线说明
/windows260/article/details/51138072
CAN通讯总结-基于STM32
/u010183728/article/details/80857127
STM32 CAN 过滤器、滤波屏蔽器配置总结
/u012587637/article/details/52032630
4 (拓展)RM电控入门
可参考扬神的Robomaster电控入门系列博客。
/sasasatori/p/1158.html