Я делал шумогенератор
на STM8. Так как там нет DMA, пришлось кроме основного таймера (генерирующего меандр) задействовать еще один таймер, подставляющий очередные значения из таблицы. Так как там нет ЦАП, использовалась смена скважности и простой RC-фильтр.
На STM32 это можно сделать более элегантно: один таймер будет пинать DMA и циклично заменять скважность импульсов у другого таймера. А у некоторых STM32 вообще набортный ЦАП есть, там еще веселей!
Если же нужны звуки вроде старых игр, то можно просто менять частоту меандра. Тогда хватит и одного таймера, а длительности по systick проверять.