第二章 基于STM32F427的电机调试和时钟配置
上一章我们移植好了单片机,于是在我们兴奋地看到自己点亮了LED之后,开始着手准备驱动的设置,那么这里面又会有什么问题呢?我把我遇到的困难和问题记录在此,同时也为你们答疑解惑。
电机和can通信移植过程
这里电机采用的是大疆的M3508,是通过can通信或者PWM波进行驱动的,此次的调试是在用F407成功驱动后的基础上进行的,所以如果需要详细程序的小伙伴可以去别的博客看看,关于他的驱动程序已经有很多,包括在github上也有开源的代码。我将会直接快进到移植的部分。

①IO口的切换
首先想到的就是CAN1 GPIO口的切换,这里用的CAN1口是PD0(RX)和PD1(TX),时钟线也应该更改到对应的GPIOD的时钟线上。
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
CAN1_PORT_ENABLE();
GPIO_InitStructure.GPIO_Pin = PIN_CAN1_TX | PIN_CAN1_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init( PORT_CAN1, &GPIO_InitStructure );
GPIO_PinAFConfig( PORT_CAN1, CAN1_AF_TX, CAN1_AF );
GPIO_PinAFConfig( PORT_CAN1, CAN1_AF_RX, CAN1_AF );
②CAN的初始化
接下来是CAN1的初始化,概括来讲就是
CAN1时钟线使能(在上文的 CAN1_PORT_ENABLE();)
CAN通信协议配置
CAN通信波特率设置
NVIC中断配置(配置一个接收中断就好)
CAN_StructInit( &CAN_InitStructure );
CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure

本文详细讲述了在STM32F427上移植M3508电机驱动的过程,涉及CAN1接口的IO口切换、CAN通信初始化、波特率调整及时钟配置。通过解决波特率不匹配问题,作者分享了如何确保CAN通信稳定并驱动电机转动。
最低0.47元/天 解锁文章
4247

被折叠的 条评论
为什么被折叠?



