In a51676db5e ("clang-format the lot"), headers were re-ordered.
This is not a change that makes no difference, and caused CircuitPython
to stop building:
../../lib/protomatter/arch.h: In function '_PM_convert_565_word':
../../lib/protomatter/arch.h:1114:3: error: implicit declaration of function 'memset' [-Werror=implicit-function-declaration]
1114 | memset(dest, 0, core->bufferSize);
| ^~~~~~
../../lib/protomatter/arch.h:1114:3: error: incompatible implicit declaration of built-in function 'memset' [-Werror]
../../lib/protomatter/arch.h:147:1: note: include '<string.h>' or provide a declaration of 'memset'
However, the real fix is to include in arch.h any header that MUST have its
declarations visible for the header to be self-supporting; do so.
stm32's GPIO set/clear registers are effectively 16 bits big,
unlike other platforms encountered so far.
Introduce macros to set/clear registers, and use them.
Later, stm32 will introduce its own definition of the _PM_PORT_TYPE macro
as uint16_t.
Testing performed: compile-tested on nRF.