一、介绍
当需要将数组转换成32位数据运算时,往往通过移位操作来实现。但是在位数较少的单片机中(8位/16位 MCU),其移位操作是有限的。利用联合体共用内存空间的原理可以有效解决移位问题,将数组的值直接转为32位数据。
二、开发环境
MCU:PIC24FJ32GA002 16位
IDE:MAPLAB X
编译器:XC16 v1.20
存储模式:小端模式
三、代码实现
typedef union
{
uint32_t val;
uint8_t byte[4];
} COMMON_UNION;
uint8_t Buf[4] = {0x12, 0x34, 0x56, 0x78};
COMMON_UNION tempUnion;
for (i = 0; i < 4; i ++)
{
tempUnion.byte[3 - i] = Buf[i];
}
//这时tempUnion.val的值为0x12345678