My current understanding is that register manipulation has not yet been explored with the Portenta because the macros to do it have not been coded within the Arduino environment.
For example, for the UNO, register manipulation is easy because the macros to do it have been coded into "Arduinish language" to make it easy. There are only two registers there to fiddle with, PORT and DDR which make it even easier still to write quickly executed code.
If we look at the datasheet for the GPIOs From the Portenta microcontroller datasheet however under section 12 "General Purpose I/Os (GPIO)" it states:
Each general-purpose I/O port has four 32-bit configuration registers (GPIOx_MODER,
GPIOx_OTYPER, GPIOx_OSPEEDR and GPIOx_PUPDR), two 32-bit data registers
(GPIOx_IDR and GPIOx_ODR) and a 32-bit set/reset register (GPIOx_BSRR). In addition
all GPIOs have a 32-bit locking register (GPIOx_LCKR) and two 32-bit alternate function
selection registers (GPIOx_AFRH and GPIOx_AFRL).
Which is evidently more complicated that other Arduino microcontroller architectures. Can anyone shed light as to what the STM32H747 registers do, or perhaps more importantly, which ones (if at all) can be ignored?
Register manipulation will be hugely advantageous for the Portenta. Of course I don't need to stress too much that the fast clock speeds should be taken full advantage of by dispensing with slow code.