0

私はSDK vivadoのCコードでソフトウェアを書いています。レジスタに書き込むためのこの関数があります

MYIP_CELL_TOP_mWriteReg(BaseAddress, RegOffset, Data) \
Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data))

ご覧のとおり、この関数のパラメーターの 1 つは U32 であるデータあり、U32 の意味は次のとおりです。

unsigned long   U32

レジスタに浮動小数点数を送信したい。

この数字 0.0807836fのように、私がしたことは、小数部分と小数部分を分離し、それらを異なるレジスタに送信することです.(次に、他の関数を使用してレジスタから読み取り、それらを連結することができます)

私の問題は、それらをレジスタに送信するときです。小数部分は807836 で、これは0807836が必要です。

私はこのコードを書きました:

Xfloat32 a = 0.0807836f
        int whole, thousandths ;
        whole = a;
        thousandths = (a - whole) * 100000;

        MYIP_CELL_TOP_mWriteReg(XPAR_MYIP_CELL_TOP_V1_0_0_0_S00_AXI_LITE_BASEADDR ,ADDR_CLUSTER_INIT_DATA_DATA_0_OFFSET, whole);
        MYIP_CELL_TOP_mWriteReg(XPAR_MYIP_CELL_TOP_V1_0_0_0_S00_AXI_LITE_BASEADDR ,ADDR_CLUSTER_INIT_DATA_DATA_1_OFFSET, thousandths );

この 0807836 のような小数部分を送信する方法を教えてください。

前もって感謝します

4

0 に答える 0