Как перестать писать на Asm и начать использовать C++ для STM32?
==================================================================

 Суть проблемы в том, что мне в наследство достался достаточно большой архив ПО на Asm для микроконтроллеров семейства AVR8. В дальнейшем борьба за микросекунды привела нас к миграции на STM32 с использованием всё того же ассемблера. Во-первых, специфика работы подразумевает сокращение времени исполнения основного кода до минимума, во-вторых, ассемблер субъективно мне понятней и ближе. В данный момент задач становится всё больше, логика запутывается всё сильнее, обслуживать разросшийся код становится всё сложнее.  

  

Хотелось бы надеяться, что плавный переход на C, C++ и дальнейшее использование RTOS и кусков ассемблерного кода изменят ситуацию, но тут-то и возникает основная проблема. В данный момент ST предлагает использовать для разработки CubeIDE с применением HAL. Помимо этого существуют StdPeriph, CMSIS и, подозреваю, целая куча других библиотек (QnA два года назад предлагали LibOpenCM3, например). Что же всё-таки выбрать в данной ситуации? Хочется и быстрого кода, и удобного управления кучей событий и прерываний, и читаемости. 

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

 Выберите профайлер и внутрисхемную отладку.   

На основе этих метрик и будете переписывать проблемные участки кода на ASM  

  

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