今天找了一天的问题union共用体,在这记录一下:
1、共用体内定义最好不要 uint8_t 和 uint16_t 混用,因为我在使用过程中发现通过数组批量赋值一直有问题我屈服了,最后改用uint8_t 加数组方式,具体方式如下:
2、附上大小端转换函数和对比函数:
/******************************************************************************************
*** 函数名称: arraySwitchSize
*** 输入参数: pbuff:数组倒置的数组,length:数组长度
*** 返 回 值: 无
*** 说 明:数组大小端切换
*** 调度周期:无
*** 编者 时间 版本
*** XX XXX XXX
******************************************************************************************/
void arraySwitchSize(uint8_t *pbuff, uint8_t length)
{
uint8_t pbuf[length];
uint8_t count;
memcpy(pbuf, pbuff, length); //复制出数组
for(count =0; count <length; count ++) //数据反向赋值
{
pbuff[count] = pbuf[length - count -1];
}
}
/******************************************************************************************
*** 函数名称: arrayCompare
*** 输入参数: pbuff:对比数组1,pbuff2:对比数组2,length:对比长度
*** 返 回 值: 0:数组相同,1:数组不同
*** 说 明:数组数据是否相同对比
*** 调度周期:无
*** 编者 时间 版本
*** XX XXX XXX
******************************************************************************************/
uint8_t arrayCompare(uint8_t *pbuff, uint8_t *pbuff2, uint8_t length)
{
uint8_t count;
uint8_t ret_value =0;
for(count =0; count <length; count ++) //数据反向赋值
{
if(pbuff[count] != pbuff2[count])
{
ret_value =1;
break; //不相同时直接退出比较
}
}
return ret_value;
}