Use a PWM component and a clock. Set the period value so, that Clock / Period = desired frequency.
Now you may set in your program the compare-value with the appropiate API between 0 (0%) and the period value (100%).
This will keep the frequency of the PWM stable and only changes the duty-cycle.
Note the update of the compare register is async, so you can short cycle
the current period duty cycle being output by PWM. To avoid this use an ISR on
the Tc output to do the update of compare register. Note this is not true for the
period register, it is updated at end of period with an internal reload of period register.