私は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 のような小数部分を送信する方法を教えてください。
前もって感謝します