Using the right tool for the job is half the battle won - that is what you learn. Here is a 20KHz Sine Wave generated by using the built-in 12-bit DAC of the MCU which like any peripheral (such as a timer or ADC) uses little to no CPU resources once set up. Without a proper DAC, generating waveforms will consume substantial amounts of CPU resources. However, for any practical application, I would still use a DDS chip.
Bookmarks