Цитата(adnega @ Jan 31 2017, 15:35)

Нужно гарантировать, что uint32_t* указывает на переменную, расположенную по адресу, кратному 4.
а, вот оно что. теперь более менее понимаю.
буфер в котором содержится нужное мне 32-битное значение uint8_t buf[100];
указатель на место, в котором содержится значением uint8_t* ptr = &buf[5];
на Cortex-M4 не заморачивался и делал вот так printf("val = %lu\n", *(uint32_t*)ptr);
на Cortex-M0+ такая запись приводит к HardFault'у. Причину теперь понимаю хорошо, и как не получать такой эффект тоже.
Пока сделал вот так:
Код
uint8_t value[4];
value[0] = *ptr;
value[1] = *(ptr + 1);
value[2] = *(ptr + 2);
value[3] = *(ptr+ 3);
uint32_t val = (value[0]) | (value[1] << 8) | (value[2] << 16) | (value[3] << 24);
printf("val = %lu\n", val);
но чувствую, можно сделать это поизящнее. Подскажите красивый способ получения доступа к 32-битному значению