请问28335中如何将数组强转为结构体,因为28335上不支持字节对齐,直接强转的话会出错
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
假设有这样的一个结构体
typedef struct FRAME
{
unsigned long int head;
unsigned int len;
unsigned int data;
unsigned long int tail
}FRAME;
下面是我的一个缓冲区数组,并数据如下,
unsigned char buf[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0a, 0x0b, 0x0c};
我希望将这个数值对应到结构体中,使得
head = 0x04030201,len = 0x0605,data = 0x0807, tail - 0x0c0b0a09
我在STM32上可以将结构体一字节对齐后强转操作如下
FRAME *pframe = (FRAME *)buf;
我在28335这么操作后,发现结构体中的数据并不如我所愿,我应该如何操作呢
Tony Liu4 说:下面是我的一个缓冲区数组,并数据如下,
unsigned char buf[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0a, 0x0b, 0x0c};
我希望将这个数值对应到结构体中,使得
head = 0x04030201,len = 0x0605,data = 0x0807, tail - 0x0c0b0a09
假设char 类型为8位宽。在C28x CPU上不是这种情况。C28x上最小的类型是16位。因此,最多可以打包成32位长的 是2个16位字。您可以接受此限制吗?
如果您对此限制不满意 ,则需要考虑使用__byte内在函数。请在C28x编译器手册中搜索__byte 。