Zol'berg
Jul 10 2013, 15:05
Всем привет, имеется программка, имеющая результатом своих вычислений массив float32_t, на базе stm32f4, и все хорошо, но вот проблемка,
теперь необходимо вывести это все параллельно через порт (16 битный), сперва старшие 2 байта, а после младшие 2 байта, как это сделать на С
без преобразования float в int не догоню, операции сдвига для float не катят!!
Спасибо))
skripach
Jul 10 2013, 15:19
как угодно, вариантов много, union c int16 например.
через преобразование типов указателей:
unsigned int int_var = *((int*)(&float_var));
float a = 0.5;
unsigned short high = (*((int*)(&a))) >> 16;
unsigned short low = *((int*)(&a));
ну или через использование union.
toweroff
Jul 10 2013, 15:24
Ну так и присваивайте что-то типа
Код
float32_t f;
uint16_t *i;
i = (uint16_t*)&f;
port = *i++;
port = *i;
Zol'berg
Jul 10 2013, 15:47
Всем спасибо, заработало!