Я сейчас пытаюсь отправить поплавки через USB. На ПК есть приложение Qt, выполняющее следующий код
float x = 2.0;
memcpy(buffer.data() + 14, &x, sizeof x);
с функцией debuglog я могу ясно видеть серию байтов, проходящих через следующий порядок
.. 00 00 00 40 ..
который согласно этому сайту
http://www.scadacore.com/field-tools/programming-calculators/online-hex-converter/
преобразуется в 1073741824 в случае слабого байта.
на моем STM32 я могу использовать следующий код, чтобы затем включить LED4
uint32_t a = buffer[14] | (buffer[15] << 8) | (buffer[16] << 16) | (buffer[17] << 24);
if (a == 1073741824){
HAL_GPIO_WritePin(LED4_PORT, LED4_PIN, GPIO_PIN_RESET);
}
Проблема возникает, когда я хочу преобразовать в реальное значение с плавающей запятой 2.0.
на самом деле, если я сделаю
float b = buffer[14] | (buffer[15] << 8) | (buffer[16] << 16) | (buffer[17] << 24);
if (b == 2.0f){
HAL_GPIO_WritePin(LED5_PORT, LED5_PIN, GPIO_PIN_RESET);
}
LED5 не включается.
Это проблема с порядком байтов? Как я могу получить значение с плавающей запятой 2.0?
С уважением,