Complementary PWM channels Output

It depends what you mean by "update duty cycle" in your switch statement and whether the vectors are updated on a per pattern or per PWM period basis.

If you mean change the vector sequencing to a different pattern, then it's possible to provide the Transmit Next Data Pointer (PWM->PWM_TNPR) register with a new pointer to an array pattern, say data2[]. At end of the current pattern a new pattern will be loaded and output.

If however you mean change the vector on a period by period basis, then it's probably better to go back to synchronous mode 0 or 1 and set the duty-cycle update registers in the PWM Controller's interrupt service routine manually.

This requires the interrupt service routine to be called at the end of each PWM period, by enabling the counter event on channel 0 interrupt:

PWM->PWM_IER1 = PWM_IER1_CHID0;                        // Enable interrupt on PWM channel 0 triggered at end of PWM period

Then implementing the switch statement to change the duty-cycle update register for each channel (PWM->CH_NUM[X].PWM_CDYUPD) within the PWM_Handler() function.