创建新的数据类型-共用体

对于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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值