方式1: 利用定时器4发送
TM40_PWM_1Period_2Duty(64, 32, 32);
void TM40_PWM_1Period_2Duty(uint16_t period, uint16_t duty1, uint16_t duty2)
{CGC->PER0 |= CGC_PER0_TM40EN_Msk; /* enables input clock supply */TM40->TPS0 = _0000_TM4_CKM3_fCLK_8 | _0000_TM4_CKM2_fCLK_1 | _0000_TM4_CKM1_fCLK_0 | _0000_TM4_CKM0_fCLK_0; /* master channel */TM40->TMR00 = _8000_TM4_CLOCK_SELECT_CKM1 | _0000_TM4_TRIGGER_SOFTWARE | _0001_TM4_MODE_PWM_MASTER;TM40->TDR00 = period - 1;TM40->TO0 &= ~_0001_TM4_CH0_OUTPUT_VALUE_1;TM40->TOE0 &= ~_0001_TM4_CH0_OUTPUT_ENABLE;/* slave channel */TM40->TMR01 = _8000_TM4_CLOCK_SELECT_CKM1 | _0400_TM4_TRIGGER_MASTER_INT | _0009_TM4_MODE_PWM_SLAVE;TM40->TDR01 = duty1;TM40->TOM0 |= _0002_TM4_CH1_SLAVE_OUTPUT; /* slave channel output mode */TM40->TOL0 &= ~_0002_TM4_CH1_OUTPUT_LEVEL_L; /* positive logic output (active-high) */ TM40->TO0 &= ~_0002_TM4_CH1_OUTPUT_VALUE_1; /* TOmp default output level */TM40->TOE0 |= _0002_TM4_CH1_OUTPUT_ENABLE; /* Enable TOmp output by counting operation */TO01_PORT_SETTING();/* slave channel */TM40->TMR02 = _8000_TM4_CLOCK_SELECT_CKM1 | _0400_TM4_TRIGGER_MASTER_INT | _0009_TM4_MODE_PWM_SLAVE;TM40->TDR02 = duty2;TM40->TOM0 |= _0004_TM4_CH2_SLAVE_OUTPUT; /* slave channel output mode *///TM40->TOL0 &= ~_0004_TM4_CH2_OUTPUT_LEVEL_L; /* positive logic output (active-high) *///修改此处,设置输出电压极性不同;TM40->TOL0 |= ~_0004_TM4_CH2_OUTPUT_LEVEL_L; /* positive logic output (active-high) */TM40->TO0 &= ~_0004_TM4_CH2_OUTPUT_VALUE_1; /* TOmp default output level */TM40->TOE0 |= _0004_TM4_CH2_OUTPUT_ENABLE; /* Enable TOmp output by counting operation */TO02_PORT_SETTING();/* Start specify channel */TM40_Channel_Start(TM4_CHANNEL_0 | TM4_CHANNEL_1 | TM4_CHANNEL_2);
}
方式二:利用定时器B产生
//TMB0_DoublePulseOutput(tmb_clock_t clk, uint16_t period, uint16_t skew)TMB0_DoublePulseOutput(TMB_CLOCK_FCLK, 64, 21);delayMS(100);
其中: skew = period / 2 - 1;