An alternative approach is to configure a timer to generate interrupts at the desired conversion frequency and using an interrupt handler to write the DHR register. Once a timer is introduced into the solution, we can also use the timer interrupt to trigger the transfer from the DHR to the DOR. This insulates the DAC timing from any possible delays due to other interrupts.
As long as the interrupt handler is allowed to execute before the next timer “tick” there will be no jitter in the output signal