/* Includes ----------------------------------------------------------------- */
#include "main.h"
#include "servo.h"

#include "bsp/servo_pwm.h"


/* Private define ----------------------------------------------------------- */
#define MIN_CYCLE 0.5f		//change begin
#define MAX_CYCLE 2.5f
#define ANGLE_LIMIT 180		//change end
/* Private macro ------------------------------------------------------------ */
/* Private typedef ---------------------------------------------------------- */
/* Private variables -------------------------------------------------------- */
/* Private function  -------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
int serve_Init(BSP_PWM_Channel_t ch)
{
	if(BSP_PWM_Start(ch)!=0){
		return -1;
	}else return 0;	
}


int set_servo_angle(BSP_PWM_Channel_t ch,float angle)
{
	if (angle < 0.0f || angle > ANGLE_LIMIT) {
        return -1; // ÎÞЧµÄ½Ç¶È
    }
	
	float duty_cycle=MIN_CYCLE+(MAX_CYCLE-MIN_CYCLE)*(angle/ANGLE_LIMIT);
	if(BSP_PWM_Set(ch,duty_cycle)!=0){
		return -1;
	}else return 0;
}