pwm.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef _PWM_H__
  2. #define _PWM_H__
  3. #include "bsp/bsp.h"
  4. #include "os/os_types.h"
  5. #include "bsp/dma.h"
  6. #define TIMxCCER_MASK_CH012 ((uint16_t) (TIMER_CHCTL2_CH0EN|TIMER_CHCTL2_CH0NEN|\
  7. TIMER_CHCTL2_CH1EN|TIMER_CHCTL2_CH1NEN|\
  8. TIMER_CHCTL2_CH2EN|TIMER_CHCTL2_CH2NEN))
  9. #define pwm_enable_channel() {TIMER_CHCTL2(pwm_timer) |= TIMxCCER_MASK_CH012;}
  10. #define pwm_disable_channel() {TIMER_CHCTL2(pwm_timer) &= ~TIMxCCER_MASK_CH012;}
  11. #define ch0_update_duty(duty) TIMER_CH0CV(pwm_timer) = (uint32_t)duty
  12. #define ch1_update_duty(duty) TIMER_CH1CV(pwm_timer) = (uint32_t)duty
  13. #define ch2_update_duty(duty) TIMER_CH2CV(pwm_timer) = (uint32_t)duty
  14. #define update_adc_trigger(time) TIMER_CH3CV(pwm_timer) = (uint32_t)time
  15. #define pwm_update_duty(dutyA, dutyB, dutyC) \
  16. do {\
  17. ch0_update_duty(dutyA);\
  18. ch1_update_duty(dutyB);\
  19. ch2_update_duty(dutyC);\
  20. }while(0)
  21. #define pwm_update_2smaples(samp1, sampl2) \
  22. do { \
  23. TIMER_CH3CV(pwm_timer) = (uint32_t)samp1; \
  24. }while(0)
  25. #define enable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) |= (uint32_t) TIMER_DMA_CH3D
  26. #define disable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) &= ~((uint32_t) TIMER_DMA_CH3D)
  27. #define pwm_clear_updata() \
  28. timer_flag_clear(pwm_timer, TIMER_FLAG_UP);
  29. #define pwm_wait_and_clear_updata() \
  30. do { \
  31. while ( timer_flag_get(pwm_timer, TIMER_FLAG_UP) == RESET ); \
  32. timer_flag_clear(pwm_timer, TIMER_FLAG_UP); \
  33. }while(0)
  34. #define pwm_change_t3_mode(m) \
  35. do { \
  36. if (((TIMER_CHCTL1(pwm_timer) >> 12) & 0x7) != m) { \
  37. TIMER_CHCTL1(pwm_timer) &= (~(uint32_t)TIMER_CHCTL1_CH3COMCTL); \
  38. TIMER_CHCTL1(pwm_timer) |= (uint32_t)((uint32_t)(m) << 8U); \
  39. } \
  40. }while(0)
  41. void pwm_3phase_init(void);
  42. void pwm_start(void);
  43. void pwm_stop(void);
  44. void pwm_turn_on_low_side(void);
  45. void pwm_enable_output(bool enable);
  46. void pwm_update_sample(u32 samp1, u32 samp2, u8 sector);
  47. #endif /*_PWM_H__*/