- #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;
- }
- }