#ifndef _MCPWM_H_ #define _MCPWM_H_ #include "typedef.h" /* 对齐方式选择 */ typedef enum { pwm_edge_aligned, ///< 边沿对齐模式 pwm_center_aligned, ///< 中心对齐模式 } pwm_aligned_mode_type; /* pwm通道选择 */ typedef enum { pwm_ch0, pwm_ch1, pwm_ch2, pwm_ch3, pwm_ch_max, } pwm_ch_num_type; /* MCPWM TIMER寄存器 */ typedef struct _pwm_timer_reg { volatile u32 tmr_con; volatile u32 tmr_cnt; volatile u32 tmr_pr; } PWM_TIMER_REG; /* MCPWM通道寄存器 */ typedef struct _pwm_ch_reg { volatile u32 ch_con0; volatile u32 ch_con1; volatile u32 ch_cmph; volatile u32 ch_cmpl; } PWM_CH_REG; /* 初始化要用的参数结构体 */ struct pwm_platform_data { pwm_aligned_mode_type pwm_aligned_mode; ///< PWM对齐方式选择 pwm_ch_num_type pwm_ch_num; ///< 选择pwm通道号 u32 frequency; ///< 初始共同频率,CH0, CH, CH2,,,,,, u16 duty; ///< 初始占空比,0~10000 对应 0%~100% 。每个通道可以有不同的占空比。互补模式的占空比体现在高引脚的波形上。 u8 h_pin; ///< 一个通道的H引脚。 u8 l_pin; ///< 一个通道的L引脚,不需要则填-1 u8 complementary_en; ///< 该通道的两个引脚输出的波形。0: 同步, 1: 互补,互补波形的占空比体现在H引脚上 }; void mcpwm_set_frequency(pwm_ch_num_type ch, pwm_aligned_mode_type align, u32 frequency); void mcpwm_set_duty(pwm_ch_num_type pwm_ch, u16 duty); void mctimer_ch_open_or_close(pwm_ch_num_type pwm_ch, u8 enable); void mcpwm_ch_open_or_close(pwm_ch_num_type pwm_ch, u8 enable); void mcpwm_open(pwm_ch_num_type pwm_ch); void mcpwm_close(pwm_ch_num_type pwm_ch); void mcpwm_init(struct pwm_platform_data *arg); void mcpwm_test(void); void set_io_ext_interrupt_cbfun(void (*cbfun)(u8 index)); void io_ext_interrupt_init(u8 index, u8 port, u8 trigger_mode); void io_ext_interrupt_close(u8 index, u8 port); void io_ext_interrupt_test(void); void timer_pwm_init(JL_TIMER_TypeDef *JL_TIMERx, u32 pwm_io, u32 fre, u32 duty); void set_timer_pwm_duty(JL_TIMER_TypeDef *JL_TIMERx, u32 duty); void timer_pwm_test(void); #endif