对于32位的数据需要拆分情况适用
typedef float F32;//定义一个新的数据类型
typedef union FF32//定义一个新的共用体数据结构
{
F32 F32;
U32 U32;
U16 U16[2];
U8 U8[4];
} FF32;
后期需要这类操作的话
//Ex零点标定
void SS_Offset()
{
FF32 tem;//定义变量
while( !strstr((u8*)bufD, "\r\n"))
{
BLog("\n$$:>>>>>>>> 预热中 >> 待稳定后 >> 点击标定 >> 保存零点并退出 -----------\n");
Sensor_UpdateVal(1, 2);
}
tem.F32 = pa.ss.volt[ACH_A1];//共用体赋值
pa.dl.s2vo = tem.F32;
eeprom_write(0,0x55,EEPROM_CS1); //写零点校准标志位
printf("\r\n [0] = 0x%02x\r\n",eeprom_read(0, 0,EEPROM_CS1));
eeprom_write(2, pa.dl.s1t, EEPROM_CS1);
eeprom_write(3, tem.U8[3],EEPROM_CS1);//共用体变量应用
eeprom_write(4, tem.U8[2],EEPROM_CS1);//共用体变量应用
eeprom_write(5, tem.U8[1],EEPROM_CS1);//共用体变量应用
eeprom_write(6, tem.U8[0],EEPROM_CS1);//共用体变量应用
printf("\r\n%X\r\n",eeprom_read(0,0,EEPROM_CS1));
BLog("\n$$:>>>>>>>> 零点标定成功 >>Sensor 1 voltage:[s1vo=%.2fmV]\r\n",pa.dl.s1vo );
save_Para(); //保存参数
}
在stc项目中
在.h文件中
typedef union PCSET
{
unsigned char val_u8;
struct
{
unsigned char modbus : 1;
unsigned char tongdao1 : 1;
unsigned char tongdao2 : 1;
unsigned char tongdao3 : 1;
unsigned char pq1 : 1;
unsigned char pq2 : 1;
unsigned char pq3 : 1;
unsigned char adc_en : 1;
}Bits;
};
extern union PCSET pcset;
在.c文件中
union PCSET pcset;
并在函数中初始化
pcset.val_u8=0;