Non ho capito la domanda però provo a rispondere:
1)GOTO in C è per indicare una
porcata che i primi tempi mi portavo dietro da ASM (da non fare

)
2)No, gli Interupt realizati su ArduinoIDE non sono trasportabili in CubeIDE
Anche perché cambia completamente la piattaforma con cui lavorare i registri coinvolti, anche qua se sei abbituato a chiamare
- Codice: Seleziona tutto
attachInterrupt(digitalPinToInterrupt(Pulsante, ISR, LOW));
e pretendi di usarlo su un STM32 ti troverai male
Ma questo con qualsiasi compilatore che non sia ArduinoIDE.
Se già sei abbituato a configurare i registri "manualmente" non importa su che compilatore sei (circa), sai che processo devi eseguire e che risorse impegnare a quel punto implementi la chiamata e la ISR.
Ovviamente così facendo perdi di portabilità, come ogni volta che ti abbassi di livello !
Magari con il core STM32 su arduinoIDE qualcosa si può fare ma non ho mai provato.
Spero di aver capito la domanda e dato risposta soddisfacente
EDIT: Ammetto di non aver seguito tutto il post, da una rapida rilettura io consiglierei il cambio di MCU. Che poi si vada a scegliere Arduino DUE, dsPIC, PIC32, STM32, ESP32 DAC interno DAC esterno o altro. A mio parere il 328P (anche a 20MHz) non è in grado di gestire la situazione.
Potresti valutare anche più di una MCU, magari una maggiore per gestire il flusso di dati e due più piccole per gestire il movimento. (Ipotesi fantasiosa mia

)
