31 lines
557 B
C
31 lines
557 B
C
|
#include "servo.h"
|
|||
|
#include "timer.h"
|
|||
|
|
|||
|
void MyServo_Init()
|
|||
|
{
|
|||
|
MyTimer_Struct_Typedef Timer;
|
|||
|
|
|||
|
//P<>riode de 20ms -> F de 50Hz
|
|||
|
Timer.Timer = TIM2;
|
|||
|
Timer.ARR = 3599; //20*180 (angle) = 3600
|
|||
|
Timer.PSC = 399; //72Mhz / 50Hz = 1.44Mhz et 3600*400 = 1.44M
|
|||
|
|
|||
|
MyTimer_Base_Init(&Timer);
|
|||
|
|
|||
|
//Pin Timer 2 Channel 1 PA0
|
|||
|
MyTimer_PWM(TIM2, 1);
|
|||
|
MyTimer_DutyCycle(TIM2, 1, 750);
|
|||
|
|
|||
|
MyTimer_Base_Start(Timer);
|
|||
|
}
|
|||
|
|
|||
|
void MyServo_ChangeAngle(uint8_t Angle)
|
|||
|
{
|
|||
|
if (Angle > 180)
|
|||
|
Angle = 180;
|
|||
|
|
|||
|
int DC = 500 + (Angle * 500 / 180);
|
|||
|
|
|||
|
MyTimer_DutyCycle(TIM2, 1, DC);
|
|||
|
}
|