Main Takeaway
记录我第三次培训的见闻
上次培训说明
宏定义常量——养成习惯
TIM
怎么查APB?——看stm32f407ig数据手册
Notes:
不要把与时间相关得放在while里面,你根本不知道一次会执行多长时间!!!
PWM
HAL库中也有定时器的相关函数,这里介绍几个常用的,
- 第一是开启定时器并打开溢出中断的HAL_TIM_Base_Start_IT
- 二是开启定时器的PWM模式HAL_TIM_PWM_Start,
- 三是设置定时器某通道的比较值的宏定义函数__HAL_TIM_SET_COMPARE。常用的回调函数是定时器溢出回调函数。
CAN
配波特率,先改大,再改小

先对过滤器进行配置
CAN很重要!多看程序理解
干活
焊了两根XT30,已经是打工人的形状了,芜湖!
电机和电调
(1 封私信) 电调(ESC) - 知乎 (zhihu.com)
可配合robomaster assistant(没啥大用)
主要是看协议——ID设置,帧头,数据怎么接收,我怎么解包
每个电机都有对应的输入范围限制,以及对应的减速比;看协议,电调ID设置
C610无刷电调
数据长度代码DLC(data length code)
SET按键操作
设置ID,直接查文档
CAN通信协议:
电调接收报文格式
一个ID对应一个2个字节
电调反馈报文格式

产品规格

GM6020直流无刷电机
6020主要用于云台yaw与pitch轴的运动控制
拨码开关设置
这里以6020为例,先讲一下其ID的设置方法。在6020的底部有一个拨码开关,共有4个开关,通过1-3拨码的组合可以得到7种不同的ID
而4号拨码代表着是否使用终端电阻。前面提到CAN总线上有着两个终端电阻,而终端电阻的作用主要是用于提高信号的质量,因此实际使用时最好能检查一下终端电阻的情况。
CAN总线终端电阻的作用有两个:
1、提高抗干扰能力,让总线寄生电容快速放电,确保总线快速进入隐性状态;
2、提高信号质量。
这里提一嘴,如果大家有去详细看C板的原理图的话,可以发现C板的CAN已经自带一个终端电阻了。
电调接收报文格式

电调反馈报文格式

PWM控制
PWM与速度的映射关系查文档
特征参数+电机参数
查文档
M2006直流无刷减速电机
2006主要用于拨弹盘的控制
3508
3508主要用于底盘、摩擦轮等控制
C语言
extern 与头文件(*.h)的区别和联系 | 菜鸟教程 (runoob.com)
头文件仅仅为阅读代码作用,没其他的作用了!(不要在头文件中定义宏)
extern:在定义变量的时候,这个extern居然可以被省略(定义时,默认均省略);在声明变量的时候,这个extern必须添加在变量前,所以有时会让你搞不清楚到底是声明还是定义。或者说,变量前有extern不一定就是声明,而变量前无extern就只能是定义。注:定义要为变量分配内存空间;而声明不需要为变量分配内存空间。
头文件只有对变量或函数的声明,绝不能有定义!!!
C语言中,数字后面带个U,L,F的含义
- U表示该常数用无符号整型方式存储,相当于 unsigned int
- L表示该常数用长整型方式存储,相当于 long
- F表示该常数用浮点方式存储,相当于 float
为什么出现“initializer element is not constant”错误-CSDN博客
试验
C板是12MHz的外部晶振
电池的输出功率如果太低就会自动断电