1. Для упакованных структур есть __attribute__((packed)), который
понимают все компиляторы (IAR, GCC, ARMCC). 2. В CMSIS есть макросы для невыровненого доступа: __UNALIGNED_UINT16_READ, __UNALIGNED_UINT16_WRITE, __UNALIGNED_UINT32_READ и __UNALIGNED_UINT32_WRITE.