У меня небольшая дилемма с моим кодом.
У меня есть функция, которая возвращает указатель (uint8_t *) на буфер данных. Возможно и законно привести этот указатель к uint16_t, когда мне нужно 2 значения из массива как uint16_t? Или будет проблема с выравниванием? Буфер заполняется через чтение байтов из I2C.
Проблема существует на MCU, но когда я пытаюсь это сделать с visualstudio, это нормально. MCU - Hardfault
uint8_t arr[8];
uint8_t * FuncReturnPointer(void)
{
arr[0] = 0xEE;
arr[1] = 0xFF;
return arr;
}
main
{
uint16_t val16 = 0;
val16 = *(uint16_t*)FuncReturnPointer();
}
Что-то не так / опасно?