/-----------------烧饼调试记录---------------/ 2021/10/15 CAN1和CAN2的问题,两个差不多,但是CAN1能单独用,而CAN2收发信息的时候,需要使能CAN1的RCC时钟。切记切记
2021/10/16 哨兵云台所有电机已经写完了,可以做参考
2021/10/29 好久不记录了啊 今天上车调了云台yaw和pitch轴电机,在车上限制很大,调节很痛苦。最后效果也不是很好,不过刘陈杰调好了,等他分享之后再去尝试一下吧。 注意事项的话:一定要抓紧时间调,6020系数比较难调,并且上车后和场下差别很大的。 有调节了下上位机通信
2021/11/16 通信串口DMA接收 1、通信收发都加上DMA,而且一定要注意串口DMA收和发是不同的数据流,debug了好久 2、.cpp中断函数一定要加上extern “C” 3、或者检查一下是不是电池没电了(麻了) 4、DMA加上之后,串口波特率要上去,不然会有问题 至少 1152000
2021/12/20 不要在循环中循环定义指针,指针会分配内存,用的多了,内存无了,就自动死亡了
2021/12/30 目前代码中的陀螺仪是放在一个任务里面的,因为yaw是积分算角度的,因此任务的周期必须大于5ms,不然会出现问题。找了好久的bug。
2022/1/18 布线经验教训
2022/1/18 布线结束走线总结与经验教训 1、三主控板,上云台Can2接底盘Can1再接下云台Can2。这样形成串行总线,那么三者就相当于是一条总的can线,三者可以两两通信。 2、电机接线,上下云台的摩擦轮1和2以及拨弹轮接自己主控板的Can1. 两个yaw轴电机接底盘的Can1线,具体原因可以自己看一下yaw的电源线和can线接口在哪里,直接接到云台主控板会绕线。 所以根据1中的串行总线,可以知道接到底盘的can1,那么就相当于接到了云台的can2,所以可以用云台控制yaw了。 3、pitch是接到了can2,是因为yaw接到了can2.yaw和pitch都是6020,它和3508与2006发送电流帧头不一样,又因为can发送电流一次最多可以控制四个电机,为了不浪费can发送功能,所以pitch接到了can2.我建议你们也这样进行电机can分配,这样是比较合理的。 4、装新车,机械电控与硬件要一起装,千万不要机械装好,再布线。 * 机械要留好控卫,也就是6020的CAN id设置 孔位,或者让控制再机械装载之前设置好6020电机的canID以及其他电调的ID,因为他装上了很难改。 * 机械镂空之前和电控与硬件商量器件安装位置,镂空时预留走线空位,也要让机械考虑地盘上下平面距离轨道的高度,便于放置电子器件。 * 上下云台yaw和pitch电调ID要用两组不同的例如上用5、6,下用1、2,以防下错代码,然后G
2022/1/19 1、发现集电滑环会绕线,所以机械撞车时候一定要和硬件一起装,多转几圈看会不会绕线。 最后发现是集电滑环的钉子和转子撞反了,所以一定要先请教一下去年的学长确定方向,不然机械要重装,硬件也要重新布线,痛苦,年轻人千万不要自己折磨自己。 好吧,最后是因为机械需要定制,但是是让我买的,可惜他没和我强调是要定制哪种的,我也不知道,结果就G了,所以建议还是自己买自己的东西,这样好弄,,实在不行就直接转账,不要帮别人买器件!!!大概率会出问题,唉。 2、C板安装位置,如果要使用陀螺仪反馈yaw和pitch的角速度的话,一定要注意安装位置,具体怎么安装自己测试。(我的建议是把C板长的一端和pitch轴平行,这样和我的代码是一致的。
2022/1/21 1、接线一定要注意,今天就因为串口线接错了,从而导致整个C板都不工作了,万幸C板没坏,最后才排查出来 2、电机接线,因为底盘can1需要和上下云台通信,然后我又把底盘的3508接到了底盘,然后云台控制就有问题,这应该就是can通信有问题,所以需要把地盘的3508和刹车2006接到can2.
2022/1/22 如果用遥控器写了控制,在开电后,一定要先打开遥控器,不然程序会随机读取一个值,然后乱动。 或者在遥控器初始化中加个循环,只有读取到遥控器的任意一个摇杆值为1024时(说明遥控器打开),才跳出循环。
2022/2/10 //cpp文件中中断一定要记得在函数最开始+extern "C" extern "C" void xPortSysTickHandler(void);
2022/2/11 晶振的软硬件配套符合 晶振主频和硬件有关,RM官方A板和C板都是采用的12Mhz的晶振。 正点原子和市面上的一些(可以理解成抄正点的)是8MHz。 我们自己画的底盘板是25Mhz。
软件中我们需要进行代码宏定义修改。 一个在system_stm32f4xx.c文件中这个位置处(如下),把PLL_M的宏定义修改成和硬件原理图一致的数字(8 or 12 or 25)即可保证系统时钟正确。
/************************* PLL Parameters ************************************/ #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) / PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 12
一个在一个在stm32f4xx.h文件中这个位置处(如下),把 HSE_VALUE 的宏定义修改成和硬件原理图一致的数字(8 or 12 or 25)即可保证系统时钟正确。
#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
2022/2/20 class: cPID cMotorMsg
enum: eGMWhichMotor eGMCallBack_CAN_ID ePID_RampState
struct: sMotorMsg sGetAngelAll sGeneralPID
2022/2/21 时钟树研究
/* PLL P used as system clock source */
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 12 #define PLL_N 336
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */ #define PLL_Q 7
/* SYSCLK = PLL_VCO / PLL_P */ #define PLL_P 2
2022/2/22 debug Error: L6218E: Undefined symbol xTaskGetHandle (referred from ins_task.o).
这个是freertos配置的问题,如果有其他的和freer同时有关的未定义函数error,应该也同理,解决方案见以下链接 https://blog.csdn.net/oshan2012/article/details/78910953
2022、2、25 串口一的GPIO口一点定要设置成 PA9和PB7。这里不能用PB8和PB7。这里PB7没问题,有问题的是PB8,他因为C板把他连结成了IIC读取IMU磁力计。所以只能用Pa9.
2022/3/4 VScode 写代码时候,代码提示很奇怪,会把所有的代码提示都展开。例如结构体用了.之后,会提示从A到Z排序的很多提示内容,并且很多都不是自己工程里的,这时候可以看这个博客解决。 https://blog.csdn.net/weixin_48195390/article/details/119089303 主要是这个配置的问题:intelliSenseEngine
2022/3/24
uint32_t StdId; /*!< Specifies the standard identifier. This parameter can be a value between 0 to 0x7FF. */
can 通信的stdid大小最大为 0x7FF 我就是设置了一个比它大的 结果G了 debug了好久
2022/4/14 如果之前跑的代码突然出问题了,首先检查一下线材。有问题直接换线,我就有两个can线从内部断了,一个彻底断了,一个解除不量。
2022、4、17 滑环线一定要保护好,用绕线管绕著之后再用电工胶绕一圈,保护好,或者把焊好的拍个照片留存,以便于重新焊接。
2022、4、24 当组长写文档时候,要说清楚,不然他写的达不到自己的要求
2022/5/17 机械重新装时要先设置pitch和yaw的ID ,不然就是彼此折磨
2022/6/29 G裁判系统到了之后,抓紧时间测试 检录流程,组长组织组员走一遍流程。 1 电控裁判系统更新---最新版本 2 质量、长度和高度检查,需要重新做一个架子,22年的太大了。 3 反光检查---将所有铝件都用黑胶带粘好 4 装甲板ID重置---前面是0后面是1 5 测速和读盘测试。用遥控器写一个检录程序。要求遥控器可以控制底盘移动和上下云台发射子弹 6 磁力计校准 7 结束
上场前注意 1 是否可以读取到前哨战死亡和比赛开始的信息 2 自瞄的目标是否正确。直接让视觉改代码目标敌人 3 巡逻的范围是否合适 4
2022/6/29
- 线一般不会有错误,先检查自己的电控代码,一个与视觉通信的任务没有运行,导致无自瞄
- 看看是否任务优先级出现问题导致某个线程不工作
- 完整流程比赛前一定要测试好
- can收发有问题的话,一定先检查硬件HL是否焊接反