Du benutzt einfach einen der Hardware-Timer und in deren Interrupt-Routine baust du dir dann ein Software-PWM.

https://www.roboternetz.de/wissen/in...M_per_Software

Da ist der grundlegende Ablauf drin, das muss dann eben für 3 verschiedene PWM-Ausgänge gemacht werden. Die Aufteilung auf einzelne Kanäle musst du dann im Hauptprogramm ausprogrammieren, so das möglichst wenig Logik in der ISR ist.