Я все же стартовал от прерывания ZCD произвольной фазы, накапливал
из буферов каналов напряжений и токов офигенные суммы, вычислял
интеграл и косинус фи. Затем останавливал, обрабатывал данные и
снова запускал по ZCD. Забавно было, еще на AVR раздефектовывать
асинхронные моторчики. Насчет STM32 скажу лишь, что в них очень
замудренный АЦП, расчитанный именно на конвейерную оцифровку
мультиплексных каналов. Впрочем, легко. Для ознакомления рекомендую
всё того же энтузиаста: https://istarik.ru/blog/stm32/113.html