servo.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2019, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-08-26 sogwms The first version
  9. */
  10. #ifndef __SERVO_H__
  11. #define __SERVO_H__
  12. #include <rtthread.h>
  13. #include <rtdevice.h>
  14. // 20ms; 1.5ms; +-1ms
  15. #define SERVO_PERIOD 20000000
  16. #define SERVO_DEFAULT_PULSE_MAX 2500000
  17. #define SERVO_DEFAULT_PULSE_MIN 500000
  18. typedef struct servo *servo_t;
  19. struct servo
  20. {
  21. struct rt_device_pwm *pwmdev;
  22. int channel;
  23. float angle_maximum;
  24. rt_uint32_t pluse_maximum;
  25. rt_uint32_t pluse_minimum;
  26. };
  27. servo_t servo_create(const char * pwm, int channel, float angle, rt_uint32_t pluse_min, rt_uint32_t pluse_max);
  28. rt_err_t servo_destroy(servo_t servo);
  29. rt_err_t servo_enable(servo_t servo);
  30. rt_err_t servo_disable(servo_t servo);
  31. rt_err_t servo_reset(servo_t servo);
  32. rt_err_t servo_set_angle(servo_t servo, float angle);
  33. #endif // __SERVO_H__