#include "stm32f0xx.h"
#include "delay.h"
#include "led.h"
#include "USART1.h"
#include "PWM.h"
void Motor_Turn_Config(uint16_t arr); //µç»úת¶¯Æô¶¯ÏàÐòÉèÖÃ
void Motor_TurnON(uint16_t arr); //µç»úÆô¶¯
int Motor_TurnON_flag=1;
uint16_t Hall_Input_Data=0;
int main(void)
{
// delay_init();
LED_Init();
USART1_Init();
// TIM3_Int_Init(239,29);
TIM3_PWM_Init(239, 19);
TIM15_PWM_Init(239,9);
// Motor_TurnON(100);
while (Motor_TurnON_flag)
{
//USART_SendData(USART1,Hall_Input_Data);
Motor_Turn_Config(239);
}
}
void Motor_Turn_Config(uint16_t arr)
{
Hall_Input_Data=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13) << 1) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11)<<2 );
switch(Hall_Input_Data)
{
case 2:
TIM_SetCompare2(TIM3,arr);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_12);
break;
case 3:
TIM_SetCompare2(TIM3,arr);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_13);
break;
case 1:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,arr);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_13);
break;
case 5:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,arr);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_11);
break;
case 4:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,arr);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_11);
break;
case 6:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,arr);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_12);
break;
default:
// GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
// TIM_SetCompare2(TIM3,0);
// TIM_SetCompare3(TIM3,0);
// TIM_SetCompare4(TIM3,0);
break;
}
}
void Motor_TurnON(uint16_t arr)
{
Hall_Input_Data=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_13) << 1) + (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11)<<2 );
switch(Hall_Input_Data)
{
case 2:
TIM_SetCompare2(TIM3,arr);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_12);
break;
case 3:
TIM_SetCompare2(TIM3,arr);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_13);
break;
case 1:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,arr);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_13);
break;
case 5:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,arr);
TIM_SetCompare4(TIM3,0);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_11);
break;
case 4:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,arr);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_11);
break;
case 6:
TIM_SetCompare2(TIM3,0);
TIM_SetCompare3(TIM3,0);
TIM_SetCompare4(TIM3,arr);
GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
GPIO_ResetBits(GPIOB , GPIO_Pin_12);
break;
default:
// GPIO_SetBits(GPIOB, GPIO_Pin_13 | GPIO_Pin_12 | GPIO_Pin_11);//¸´Î»ÏÂÇűÛ
// TIM_SetCompare2(TIM3,0);
// TIM_SetCompare3(TIM3,0);
// TIM_SetCompare4(TIM3,0);
break;
}
}