完成点击转动
This commit is contained in:
parent
33c7200dde
commit
9dfeaf23bb
@ -9,6 +9,7 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
|
#include "GPIO.h"
|
||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
motor_t motor_info;
|
motor_t motor_info;
|
||||||
/* Functions -----------------------------------------------------------------*/
|
/* Functions -----------------------------------------------------------------*/
|
||||||
@ -21,9 +22,6 @@ motor_t motor_info;
|
|||||||
void motor_start(void)
|
void motor_start(void)
|
||||||
{
|
{
|
||||||
motor_info.state = 1;
|
motor_info.state = 1;
|
||||||
TIM1->CCR1 = 0;
|
|
||||||
TIM1->CCR2 = 0;
|
|
||||||
TIM1->CCR3 = 0;
|
|
||||||
//TODO:开启霍尔捕捉中断
|
//TODO:开启霍尔捕捉中断
|
||||||
motor_info.hall_position = get_hall_position();
|
motor_info.hall_position = get_hall_position();
|
||||||
motor_step();
|
motor_step();
|
||||||
@ -62,17 +60,7 @@ void motor_step(void)
|
|||||||
u8 step = motor_info.hall_position;
|
u8 step = motor_info.hall_position;
|
||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
case 0x01: //第一步 A+ B-
|
case 0x03: //第二步 C+ B-
|
||||||
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;
|
|
||||||
case 0x02: //第二步 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);
|
||||||
@ -82,7 +70,7 @@ void motor_step(void)
|
|||||||
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 0x03: //第三步 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);
|
||||||
@ -92,7 +80,7 @@ void motor_step(void)
|
|||||||
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+ 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);
|
||||||
@ -102,7 +90,7 @@ void motor_step(void)
|
|||||||
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+ 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);
|
||||||
@ -122,8 +110,22 @@ void motor_step(void)
|
|||||||
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-
|
||||||
|
// 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:
|
default:
|
||||||
motor_stop();
|
// GPIO_WritePin(&PB5, HIGH);
|
||||||
|
GPIO_WritePin(&PB5, LOW);
|
||||||
|
//motor_stop();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
||||||
|
@ -62,8 +62,8 @@ void PWM_Config(void)
|
|||||||
TIM_OCInitStructure.TIM_Pulse = 700;
|
TIM_OCInitStructure.TIM_Pulse = 700;
|
||||||
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_Set; //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_Set;
|
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
|
||||||
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_Pulse = 700;
|
TIM_OCInitStructure.TIM_Pulse = 700;
|
||||||
|
@ -61,11 +61,12 @@ int main(void)
|
|||||||
HALL_Config();
|
HALL_Config();
|
||||||
PWM_Config();
|
PWM_Config();
|
||||||
motor_start();
|
motor_start();
|
||||||
|
|
||||||
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