1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| void My_TIM3_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitStruct.TIM_Period=arr; TIM_TimeBaseInitStruct.TIM_Prescaler=psc; TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High; TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStruct); TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); TIM_OC1Init(TIM3,&TIM_OCInitStruct); TIM_OC2Init(TIM3,&TIM_OCInitStruct); TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OC3Init(TIM3,&TIM_OCInitStruct); TIM_OC4Init(TIM3,&TIM_OCInitStruct); TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_Cmd(TIM3,ENABLE); }
void motor_front(void) { TIM_SetCompare1(TIM3, 6000); TIM_SetCompare2(TIM3, 500); TIM_SetCompare3(TIM3, 500); TIM_SetCompare4(TIM3, 6000); } void motor_back(void) { TIM_SetCompare1(TIM3, 500); TIM_SetCompare2(TIM3, 6000); TIM_SetCompare3(TIM3, 6000); TIM_SetCompare4(TIM3, 500);
} void motor_left(void) { TIM_SetCompare1(TIM3, 500); TIM_SetCompare2(TIM3, 500); TIM_SetCompare3(TIM3, 500); TIM_SetCompare4(TIM3, 4000); } void motor_right(void) { TIM_SetCompare1(TIM3, 4000); TIM_SetCompare2(TIM3, 500); TIM_SetCompare3(TIM3, 500); TIM_SetCompare4(TIM3, 500); } void motor_stop(void) { TIM_SetCompare1(TIM3, 500); TIM_SetCompare2(TIM3, 500); TIM_SetCompare3(TIM3, 500); TIM_SetCompare4(TIM3, 500); }
|