【求助帖】云台电机如何才能转起来?
使用官方给的例程去控制云台电机
下面附上CAN的初始化代码和发送云台电机控制命令的代码:
[code]/*************************************************************************
CAN1_Configuration
ÃèÊö£º³õʼ»¯CAN1ÅäÖÃΪ1M²¨ÌØÂÊ
*************************************************************************/
void CAN1_Configuration(void)
{
CAN_InitTypeDef can;
CAN_FilterInitTypeDef can_filter;
GPIO_InitTypeDef gpio;
NVIC_InitTypeDef nvic;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_CAN1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_CAN1);

gpio.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
gpio.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(GPIOA, &gpio);

nvic.NVIC_IRQChannel = CAN1_RX0_IRQn;
nvic.NVIC_IRQChannelPreemptionPriority = 0;
nvic.NVIC_IRQChannelSubPriority = 1;
nvic.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic);

nvic.NVIC_IRQChannel = CAN1_TX_IRQn;
nvic.NVIC_IRQChannelPreemptionPriority = 1;
nvic.NVIC_IRQChannelSubPriority = 1;
nvic.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic);

CAN_DeInit(CAN1);
CAN_StructInit(&can);

can.CAN_TTCM = DISABLE;
can.CAN_ABOM = DISABLE;
can.CAN_AWUM = DISABLE;
can.CAN_NART = DISABLE;
can.CAN_RFLM = DISABLE;
can.CAN_TXFP = ENABLE;
can.CAN_Mode = CAN_Mode_Normal;
can.CAN_SJW = CAN_SJW_1tq;
can.CAN_BS1 = CAN_BS1_9tq;
can.CAN_BS2 = CAN_BS2_4tq;
can.CAN_Prescaler = 3; //CAN BaudRate 42/(1+9+4)/3=1Mbps
CAN_Init(CAN1, &can);

can_filter.CAN_FilterNumber=0;
can_filter.CAN_FilterMode=CAN_FilterMode_IdMask;
can_filter.CAN_FilterScale=CAN_FilterScale_32bit;
can_filter.CAN_FilterIdHigh=0x0000;
can_filter.CAN_FilterIdLow=0x0000;
can_filter.CAN_FilterMaskIdHigh=0x0000;
can_filter.CAN_FilterMaskIdLow=0x0000;
can_filter.CAN_FilterFIFOAssignment=0;//the message which pass the filter save in fifo0
can_filter.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&can_filter);

CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);
CAN_ITConfig(CAN1,CAN_IT_TME,ENABLE);
}



/********************************************************************************
¸øµçµ÷°å·¢ËÍÖ¸ÁIDºÅΪ0x200£¬Ö»ÓÃÁ½¸öµçµ÷°å£¬Êý¾Ý»Ø´«IDΪ0x201ºÍ0x202
cyq:¸ü¸ÄΪ·¢ËÍÈý¸öµçµ÷µÄÖ¸Áî¡£
*********************************************************************************/
void Cmd_ESC(int16_t current_201,int16_t current_202,int16_t current_203)
{
CanTxMsg tx_message;

tx_message.StdId = 0x200;
tx_message.IDE = CAN_Id_Standard;
tx_message.RTR = CAN_RTR_Data;
tx_message.DLC = 0x08;

tx_message.Data[0] = (unsigned char)(current_201 >> 8); //¸ß8λ
tx_message.Data[1] = (unsigned char)current_201; //µÍ8λ
tx_message.Data[2] = (unsigned char)(current_202 >> 8);
tx_message.Data[3] = (unsigned char)current_202;
tx_message.Data[4] = (unsigned char)(current_203 >> 8);
tx_message.Data[5] = (unsigned char)current_203;
tx_message.Data[6] = 0x00;
tx_message.Data[7] = 0x00;

CAN_Transmit(CAN1,&tx_message);
}
[/code]

请问这篇文章对你有用吗?
【求助帖】云台电机如何才能转起来?
所有评论
暂无更多
暂无更多
关于作者
玉生烟
玉生烟
0 关注Ta
0 文章
0 经验值
0 获赞