first commit
This commit is contained in:
100
Gambal/APP/servo.c
Normal file
100
Gambal/APP/servo.c
Normal file
@ -0,0 +1,100 @@
|
||||
#include "servo.h"
|
||||
#include "Delay.h"
|
||||
|
||||
void Servo_Init(void)
|
||||
{
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //ʹ<><CAB9>TIM2ʱ<32><CAB1>
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹ<><CAB9>GPIOAʱ<41><CAB1>
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>PA1<41><31>PA2Ϊ<32><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>Ϊ50MHZ
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>TIM2<4D>ڲ<EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
TIM_InternalClockConfig(TIM2);
|
||||
//<2F><><EFBFBD><EFBFBD>TIM2
|
||||
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
|
||||
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //ʱ<>ӷ<EFBFBD>Ƶ
|
||||
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>
|
||||
TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARR <20>Զ<EFBFBD><D4B6><EFBFBD>װ<EFBFBD><D7B0>ֵ
|
||||
TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC Ԥ<><D4A4>Ƶ<EFBFBD><C6B5>
|
||||
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; //
|
||||
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);
|
||||
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TIM_OCInitTypeDef TIM_OCInitStructure;
|
||||
TIM_OCStructInit(&TIM_OCInitStructure);
|
||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//<2F><><EFBFBD><EFBFBD>PWMģʽ1
|
||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//<2F><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
|
||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
TIM_OCInitStructure.TIM_Pulse = 0; //CCR
|
||||
TIM_OC1Init(TIM2, &TIM_OCInitStructure); //<2F><>ʼ<EFBFBD><CABC>ͨ<EFBFBD><CDA8>1 PA0
|
||||
TIM_OC2Init(TIM2, &TIM_OCInitStructure); //<2F><>ʼ<EFBFBD><CABC>ͨ<EFBFBD><CDA8>2 PA1
|
||||
TIM_OC3Init(TIM2, &TIM_OCInitStructure); //<2F><>ʼ<EFBFBD><CABC>ͨ<EFBFBD><CDA8>3 PA2
|
||||
|
||||
TIM_Cmd(TIM2, ENABLE); //ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>2
|
||||
|
||||
|
||||
}
|
||||
|
||||
void Rotate(u8 a,u8 b,u8 c)
|
||||
{
|
||||
TIM_SetCompare1(TIM2,a);
|
||||
TIM_SetCompare2(TIM2,b);
|
||||
TIM_SetCompare3(TIM2,c);
|
||||
}
|
||||
//<2F><EFBFBD>ͨ<EFBFBD><CDA8>2<EFBFBD>Ƚ<EFBFBD>ֵ
|
||||
// TIM_SetCompare2(TIM2, Compare);
|
||||
//<2F><>ת
|
||||
void Rotate_clockwise(void)
|
||||
{
|
||||
Rotate(10,0,0);
|
||||
delay_ms(10);
|
||||
Rotate(10,10,0);
|
||||
delay_ms(10);
|
||||
|
||||
Rotate(0,10,0);
|
||||
delay_ms(10);
|
||||
Rotate(0,10,10);
|
||||
delay_ms(10);
|
||||
|
||||
Rotate(0,0,10);
|
||||
delay_ms(10);
|
||||
Rotate(10,0,10);
|
||||
}
|
||||
//<2F><>ת
|
||||
void Rotate_counterclockwise(void)
|
||||
{
|
||||
Rotate(0,10,0);
|
||||
delay_ms(10);
|
||||
|
||||
Rotate(10,10,0);
|
||||
delay_ms(10);
|
||||
|
||||
Rotate(10,0,0);
|
||||
delay_ms(10);
|
||||
Rotate(10,0,10);
|
||||
delay_ms(10);
|
||||
|
||||
Rotate(0,0,10);
|
||||
delay_ms(10);
|
||||
Rotate(0,10,10);
|
||||
}
|
||||
//ֹͣ
|
||||
void Rotate_stop(void)
|
||||
{
|
||||
Rotate(0,0,0);
|
||||
}
|
||||
//ɲ<><C9B2>
|
||||
void Rotate_shache(void)
|
||||
{
|
||||
Rotate(3,0,0);
|
||||
}
|
Reference in New Issue
Block a user