Robocon战队电控学习笔记02
day2:2022/9/20
一.【电控概述】
stm32是半导体厂商ST(意法半导体)生产的基于Arm Cortex的单片机系列,目前被广泛应用于工业,物联网,科创竞赛等。
大学生机器人竞赛Robomaster和Robocon主要使用的是stm32f4系列单片机,该系列基于Cortex-M4内核,具有较高的性能,CPU工作频率可以达到168MHz,基本可以满足比赛中所有的控制需求。
stm32的主流开发方式包括寄存器开发,标准库开发,HAL库(LL库)开发。
寄存器开发即直接控制32的寄存器,工程运行效率高,但是开发难度大,可读性与可移植性差;
HAL库(LL库)开发是ST开源的又一套新的库,与标准固件库的最大区别是,HAL库(LL库)支持ST开发的一款图形化工程配置软件STM32CubeMX,使用该软件可以大大提升开发效率和工程移植性,尽管由于HAL库采用了更加复杂的封装,降低了工程的运行效率,但是由于stm32本身强大的性能,中小型的工程依然能够流畅的运行。目前越来越多的用户开始使用HAL库(LL库)进行开发
本校Robocon战队1034 Robotics采用的是大疆公司官方发售的C板,其采用高性能的 stm32 主控芯片,支持宽电压输入,集成专用的扩展接口,通信接口以及高精度 IMU 传感器,可配合 RoboMaster 产品或者其他配件使用。 开发板 C 型具有如下外设:用户自定义 LED、5V 接口、BOOT 配置接口、micro USB 接口、SWD 接口、按键、可配置 I/O 接口、UART 接口、CAN 总线接口、PWM 接口、DBUS接口、数字摄像头 FPC 接口、蜂鸣器、电压检测 ADC、六轴惯性测量单元和磁力计。
上面的都是官方话,我刚开始学也一个字都看不懂,如果有单片机基础的可能可以看懂(反正我看不懂) 但是咧,看不懂问题也不大,单片机是一种技能而不是理论,需要边做边学 然后如果刚开始学习stm32的小伙伴,觉得太艰难,可以先去学习一下Arduino开发,会比大部分单片机简单的多,也可以快速入门单片机这个大坑(bushi)。日后如果有时间,我也会开帖讲一下我的Arduino学习过程~
言归正传,所谓磨刀不误砍柴工,我们在进行MCU开发之前,需要在电脑里配置相关的软件和环境
这是个相当难搞且漫长的过程,我当时安装个Keil5还安装错了差点把我整自闭,但是问题不大,重要的是需要的配置和环境都要有,为后续开发奠定基础
HAL库开发环境: 代码编辑&编译器(Keil MDK,IAR等)
就是你写代码以及将其烧录进单片机的地方,我们大部分的bug(不是)都在编译器里书写,编译,然后下载到单片机上。
下载器驱动(JLink&STLink)
我们的STM32和Arduino,51不一样,一根线就能完成烧录,而是需要一根 ST-LINK V2烧录器(这玩意可以理解成一个桥梁,连接单片机和电脑,进行数据传输)
USB线
单片机是个微型小电脑,需要电源给它供电,而USB可以连接电脑和单片机,利用电脑为其供给5V的电压(一般单片机的工作电压都是5V左右)
STM32CubeMX
传统的stm32单片机在开始写代码之前,都要经过大量的配置迁移等过程,点个LED可能要准备个把小时,因此我们可以借助STM32CubeMX这款软件,通过图形化的配置很轻松的完成初期准备。尤其是使用HAL库开发的小伙伴,这个软件相当好用,GPIO和定时器等直接在里面点然后生成代码就好了。
这些软件和驱动可以在CSDN等各大论坛找到,很多保姆级别的教程,日后的更新迭代可以关注官方信息,本人就不在此留链接了(主要是因为懒doge)。
此外,烧录器和开发板的连接方式可以查询大疆官方给出的手册,或者参考下图
|