na stm32 (aj AVR) pouzivam C++, disciplinovane :
na std knizniciach je zle to, ze tam vidno snahy o akesy "OOP" programovanie v C (rozne handlers a init struct), vysledok je hrozny hnoj, da sa cez nen prejst zaobalenim do vlastnych tried v C++; zdrzi to zvacsa len inicializacie, ale ostatny beh je v poriadku;
nejake napady co som zatial poskusal :
1, gpio cez templates - rychlost je potom na urovni assembleru:
cosi ako :
TGpio<PORTA, 3, MODE_OUT> led; //konstruktor bude asi trocha dlhsi
led = 1; //ale toto sa uz na AVR prelozi na jednu instrukciu
led = 0;
2, pamat pokial mozno len na zaciatku alokovat
3, mat triedu pre casovace, pomocou abstraktnych tried sa da vyhnut callbacks, a vytvorit udalostne riadeny planovac - bez ozajstneho multitaskingu, ale na vela veci to staci;
podla mna nie je zly napad mat aplikacny thread ako potomok nejakej abstraktnej triedy; netreba potom prasacka pointre na funkcie a inu ciernu magiu
4, existuje embedded stl, vyuziva staticku alokaciu
https://www.etlcpp.com/5, pouzivam arm-none-eabi-g++, pocas kompilacie je vypnuta podpora vynimiek, pri trocha snahe je kod takmer rovnako rychly ako v C, s neporovnatelne vacsim komfortom
6, casovo kriticke casti vzdy mozu byt v C / inline assemblery
7, ano, startup v asm je tam des, mam napisany v C