Я хочу сохранить некоторые данные с плавающей запятой в регистре FRAM моего микроконтроллера TI MSP430 и получить некоторые пролемы.Сохранить значение float в указателе uint32_t
Я не знаю, как я могу это сделать.
С нормальными целыми переменными это не проблема.
Нормальные целочисленные переменные:
void main()
{
uint32_t value = 25;
uint32_t framPtr = 0xD000;
FRAMC_write_uint32_t(value, (uint32_t*)framPtr);
}
void FRAMC_write_uint32_t(uint32_t value,
uint32_t *framPtr)
{
*framPtr = value;
}
Но со значениями с плавающей точкой не работает. Я попытался изменить значение внутри функции на float, но никакого результата.
Это мой поплавок данные:
float value = 1.25;
uint32_t framPtr = 0xD000;
С помощью этой функции она не работает:
void FRAM_write_float(float value,
uint32_t *framPtr)
{
*framPtr++ = (float)value;
}
Это сохранены данные 1.40129846e-45 (DEN) (HEX: 0x00000001) в моей памяти.
Я надеюсь, что кто-то может помочь мне с моей проблемой. Спасибо!
Приведение float в целое число не переинтерпретирует биты, если это то, что вам нужно. Он преобразует ценность. – StoryTeller
Я угадываю. Потому что вы не показывали, как вы пытаетесь фактически преобразовать float. Почему вы показываете код, который * работает * вместо кода, который не находится за пределами меня. – StoryTeller
В чем разница? Я не понимаю проблему ... Когда я заглядываю в банк памяти, я вижу, что сохраненное значение равно 1.40129846e-45 (DEN) (HEX: 0x00000001) – Pana