Как перестать писать на Asm и начать использовать C++ для STM32?
Если слишком много "узких" мест - возможно надо не тратить время на оптимизации и счет тактов, а взять FPGA или SoC и сделать специальную периферию под задачу? А в ядре или внешнем контроллере уже крутить алгоритмы, не требующие такой жесткой привязки к реальному времени. Опишите подробнее задачу, может подскажу как это можно решить.
Выберите профайлер и внутрисхемную отладку. 
На основе этих метрик и будете переписывать проблемные участки кода на ASM

И кстати С++ для микроконтроллера, особенно с критичными по времени участкам кода, это излишнее.