at24c02怎么读写float型
发布网友
发布时间:2022-05-06 09:52
我来回答
共2个回答
热心网友
时间:2022-06-29 07:37
假设你定义的读写函数如下:
void write24c02(uint8_t address,uint8_t info);
uint8_t read24c02(uint8_t address);
定义单精度浮点数float f = 1.0;,存储需要4个字节。
将其写入24c02的地址0、1、2、3(小端):
write24c02(0,*((uint32_t *)&f));
write24c02(1,*((uint32_t *)&f) >> 8);
write24c02(2,*((uint32_t *)&f) >> 16);
write24c02(3,*((uint32_t *)&f) >> 24);
将24c02的地址0、1、2、3(小端)存的浮点数读取到f:
*((uint32_t *)&f) =
(uint32_t)read24c02(0) +
((uint32_t)read24c02(1) << 8) +
((uint32_t)read24c02(2) << 16) +
((uint32_t)read24c02(3) << 24);
热心网友
时间:2022-06-29 07:38
可以的,float a=3的话,编译器会把3自动转化为float型
默认的小数都是double型的,float a = 3.0;和float a = 3;都是没有问题的,但是第一个会有警告,因为小数默认是double型,将double赋值给float会有截位现象,如果非要说一个正确的赋值的话你可以用%f直接输入给float赋值,也可以使用这种的方式赋值:float a = (float)3.0;这样就不会有警告了。
double的话比较简单,直接赋值就可以了,double b = 4.0;