完成正反转和调速
This commit is contained in:
parent
9dfeaf23bb
commit
f05dadf536
@ -36,8 +36,11 @@ typedef struct _motor
|
|||||||
/* Exported Functions --------------------------------------------------------*/
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
extern motor_t motor_info;
|
extern motor_t motor_info;
|
||||||
|
|
||||||
|
void motor_init(void);
|
||||||
void motor_start(void);
|
void motor_start(void);
|
||||||
void motor_stop(void);
|
void motor_stop(void);
|
||||||
void motor_step(void);
|
void motor_step(void);
|
||||||
|
void motor_set_speed(s16 speed);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -13,6 +13,23 @@
|
|||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
motor_t motor_info;
|
motor_t motor_info;
|
||||||
/* Functions -----------------------------------------------------------------*/
|
/* Functions -----------------------------------------------------------------*/
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 电机初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void motor_init(void)
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
GPIO_WriteBit(GPIOB, GPIO_Pin_12, RESET); //关闭MOS输出
|
||||||
|
motor_info.dir = MOTOR_DIR_CCW;
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* @brief 启动电机
|
* @brief 启动电机
|
||||||
* @param None
|
* @param None
|
||||||
@ -21,10 +38,11 @@ motor_t motor_info;
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_start(void)
|
void motor_start(void)
|
||||||
{
|
{
|
||||||
motor_info.state = 1;
|
motor_info.state = 1;
|
||||||
//TODO:开启霍尔捕捉中断
|
GPIO_WriteBit(GPIOB, GPIO_Pin_12, SET);
|
||||||
motor_info.hall_position = get_hall_position();
|
//TODO:开启霍尔捕捉中断
|
||||||
motor_step();
|
motor_info.hall_position = get_hall_position();
|
||||||
|
motor_step();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -35,17 +53,17 @@ void motor_start(void)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_stop(void)
|
void motor_stop(void)
|
||||||
{
|
{
|
||||||
motor_info.state = MOTOR_STATE_STOP;
|
motor_info.state = MOTOR_STATE_STOP;
|
||||||
TIM1->CCR1 = 0;
|
TIM1->CCR1 = 0;
|
||||||
TIM1->CCR2 = 0;
|
TIM1->CCR2 = 0;
|
||||||
TIM1->CCR3 = 0;
|
TIM1->CCR3 = 0;
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
|
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -57,78 +75,91 @@ void motor_stop(void)
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_step(void)
|
void motor_step(void)
|
||||||
{
|
{
|
||||||
u8 step = motor_info.hall_position;
|
u8 step = motor_info.dir == MOTOR_DIR_CCW ? motor_info.hall_position ^ 0x7 : motor_info.hall_position;
|
||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
case 0x03: //第二步 C+ B-
|
case 0x03: //第二步 C+ B-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x01: //第三步 C+ A-
|
case 0x01: //第三步 C+ A-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x05: //第四步 B+ A-
|
case 0x05: //第四步 B+ A-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x04: //第五步 B+ C-
|
case 0x04: //第五步 B+ C-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
||||||
break;
|
break;
|
||||||
case 0x06: //第六步 A+ C-
|
case 0x06: //第六步 A+ C-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
||||||
break;
|
break;
|
||||||
case 0x02: //第一步 A+ B-
|
case 0x02: //第一步 A+ B-
|
||||||
// GPIO_WritePin(&PB5, HIGH);
|
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
// GPIO_WritePin(&PB5, HIGH);
|
// GPIO_WritePin(&PB5, HIGH);
|
||||||
GPIO_WritePin(&PB5, LOW);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
||||||
//motor_stop();
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
break;
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
}
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
||||||
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
||||||
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// GPIO_WritePin(&PB5, HIGH);
|
||||||
|
GPIO_WritePin(&PB5, LOW);
|
||||||
|
//motor_stop();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 设置电机运行速度
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void motor_set_speed(s16 speed)
|
||||||
|
{
|
||||||
|
TIM1->CCR1 = speed;
|
||||||
|
TIM1->CCR2 = speed;
|
||||||
|
TIM1->CCR3 = speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void PWM_Config(void)
|
void PWM_Config(void)
|
||||||
{
|
{
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure; //端口结构体变量定义
|
||||||
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //基本结构体变量定义
|
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //基本结构体变量定义
|
||||||
TIM_OCInitTypeDef TIM_OCInitStructure; //输出结构体变量定义
|
TIM_OCInitTypeDef TIM_OCInitStructure; //输出结构体变量定义
|
||||||
TIM_BDTRInitTypeDef TIM_BDTRInitStructure; //死区刹车结构体变量定义
|
TIM_BDTRInitTypeDef TIM_BDTRInitStructure; //死区刹车结构体变量定义
|
||||||
@ -59,23 +59,19 @@ void PWM_Config(void)
|
|||||||
TIM_OCInitStructure.TIM_OCMode = TIM_ForcedAction_InActive; //PWM2:递增计数时CNT<CCRx,OC输出无效电平;递减计数时CNT>CCRx,OC输出有效电平 TIM_ForcedAction_InActive
|
TIM_OCInitStructure.TIM_OCMode = TIM_ForcedAction_InActive; //PWM2:递增计数时CNT<CCRx,OC输出无效电平;递减计数时CNT>CCRx,OC输出有效电平 TIM_ForcedAction_InActive
|
||||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
||||||
TIM_OCInitStructure.TIM_Pulse = 700;
|
TIM_OCInitStructure.TIM_Pulse = 0;
|
||||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||||
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
|
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
|
||||||
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //TIM_OCIdleState_Set;TIM_OCIdleState_Reset
|
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //TIM_OCIdleState_Set;TIM_OCIdleState_Reset
|
||||||
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
|
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
|
||||||
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_Pulse = 700;
|
|
||||||
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_Pulse = 700;
|
|
||||||
TIM_OC3Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC3Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //TIM输出通道4初始化,用来触发AD注入采样
|
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //TIM输出通道4初始化,用来触发AD注入采样
|
||||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
||||||
TIM_OCInitStructure.TIM_Pulse = 1400;
|
TIM_OCInitStructure.TIM_Pulse = 0;
|
||||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
||||||
TIM_OC4Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC4Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
|
@ -55,18 +55,33 @@ int main(void)
|
|||||||
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
||||||
SysTick_init();
|
SysTick_init();
|
||||||
GPIO_Config(&PB5, GPIO_Mode_Out_PP);
|
GPIO_Config(&PB5, GPIO_Mode_Out_PP);
|
||||||
GPIO_Config(&PB12, GPIO_Mode_Out_PP);
|
|
||||||
GPIO_WritePin(&PB12, HIGH);
|
|
||||||
// USART_Config(USART1, 9600);
|
// USART_Config(USART1, 9600);
|
||||||
HALL_Config();
|
HALL_Config();
|
||||||
PWM_Config();
|
PWM_Config();
|
||||||
|
motor_init();
|
||||||
motor_start();
|
motor_start();
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(100);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(300);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(500);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(700);
|
||||||
|
motor_info.dir=MOTOR_DIR_CW;
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(900);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(1200);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(1400);
|
||||||
|
delay_ms(5000);
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
// GPIO_WritePin(&PB5, HIGH);
|
GPIO_WritePin(&PB5, HIGH);
|
||||||
// delay_ms(500);
|
delay_ms(500);
|
||||||
// GPIO_WritePin(&PB5, LOW);
|
GPIO_WritePin(&PB5, LOW);
|
||||||
delay_ms(500);
|
delay_ms(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user