私のTI MSP430マイクロコントローラのFRAMレジスタにいくつかの浮動小数点データを格納し、いくつかのprolemsが必要です。浮動小数点数を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に変更しようとしましたが、結果はありません。
は、これは私の浮動小数点データである:それは動作しません。この機能を
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)私のメモリバンクに。
誰かが私の問題を助けてくれることを願っています。 ありがとうございます!ビットを再解釈する
浮動小数点数を整数にキャストしても、ビットが再解釈されません。それは価値の変換を行います。 – StoryTeller
私は推測しています。フロートの実際の変換方法を示していないからです。なぜ私以外のコードではなく*働くコードを表示しているのですか? – StoryTeller
違いは何ですか?私は問題を理解していません... メモリバンクを調べると、保存された値は1.40129846e-45(DEN)(HEX:0x00000001)です。 – Pana