1
0

ls1c_pwm.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2017-09-06 勤为本 first version
  9. */
  10. #ifndef __OPENLOONGSON_PWM_H
  11. #define __OPENLOONGSON_PWM_H
  12. // pwm引脚定义
  13. #define LS1C_PWM0_GPIO06 (6) // gpio06用作pwm0
  14. #define LS1C_PWM0_GPIO04 (4) // gpio04复用为pwm0
  15. #define LS1C_PWM1_GPIO92 (92) // gpio92用作pwm1
  16. #define LS1C_PWM1_GPIO05 (5) // gpio05复用为pwm1
  17. #define LS1C_PWM2_GPIO52 (52) // gpio52复用为pwm2
  18. #define LS1C_PWM2_GPIO46 (46) // gpio46复用为pwm2
  19. #define LS1C_PWM3_GPIO47 (47) // gpio47复用为pwm3
  20. #define LS1C_PWM3_GPIO53 (53) // gpio53复用为pwm3
  21. // ...还有一些gpio可以复用为gpio的,有需要可以自己添加
  22. // pwm控制寄存器的每个bit
  23. #define LS1C_PWM_INT_LRC_EN (11) // 低脉冲计数器中断使能
  24. #define LS1C_PWM_INT_HRC_EN (10) // 高脉冲计数器中断使能
  25. #define LS1C_PWM_CNTR_RST (7) // 使能CNTR计数器清零
  26. #define LS1C_PWM_INT_SR (6) // 中断状态位
  27. #define LS1C_PWM_INTEN (5) // 中断使能位
  28. #define LS1C_PWM_SINGLE (4) // 单脉冲控制位
  29. #define LS1C_PWM_OE (3) // 脉冲输出使能
  30. #define LS1C_PWM_CNT_EN (0) // 主计数器使能
  31. // 硬件pwm工作模式
  32. enum
  33. {
  34. // 正常模式--连续输出pwm波形
  35. PWM_MODE_NORMAL = 0,
  36. // 单脉冲模式,每次调用只发送一个脉冲,调用间隔必须大于pwm周期
  37. PWM_MODE_PULSE
  38. };
  39. // 硬件pwm信息
  40. typedef struct
  41. {
  42. unsigned int gpio; // PWMn所在的gpio
  43. unsigned int mode; // 工作模式(单脉冲、连续脉冲)
  44. float duty; // pwm的占空比
  45. unsigned long period_ns; // pwm周期(单位ns)
  46. }pwm_info_t;
  47. /*
  48. * 初始化PWMn
  49. * @pwm_info PWMn的详细信息
  50. */
  51. void pwm_init(pwm_info_t *pwm_info);
  52. /*
  53. * 禁止pwm
  54. * @pwm_info PWMn的详细信息
  55. */
  56. void pwm_disable(pwm_info_t *pwm_info);
  57. /*
  58. * 使能PWM
  59. * @pwm_info PWMn的详细信息
  60. */
  61. void pwm_enable(pwm_info_t *pwm_info);
  62. #endif