我在 sdk vivado 中用 c 代码编写软件,我有这个函数可以写入寄存器
MYIP_CELL_TOP_mWriteReg(BaseAddress, RegOffset, Data) \
Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data))
如您所见,此函数的参数之一是Data,它是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 这样的小数部分。
先感谢您