Pointers 结构类型变量/指针不丢失内存位置

Pointers 结构类型变量/指针不丢失内存位置,pointers,struct,flash-memory,sam,Pointers,Struct,Flash Memory,Sam,我很难理解,在比较中,当从flash开始放射线时,如何用不同的方式解释变量类型 例如,我有一个struct typedef struct { uint8_t possition; uint8_t frequency; uint32_t frequency_resolution; uint32_t seconds; uint32_t minutes; uint32_t hours; }ScanOptions_struct;

我很难理解,在比较中,当从flash开始放射线时,如何用不同的方式解释变量类型

例如,我有一个struct

typedef struct  
{
    uint8_t possition;
    uint8_t frequency;
    uint32_t frequency_resolution;
    uint32_t seconds;
    uint32_t minutes;
    uint32_t hours;
    
    
}ScanOptions_struct;
我使用填充结构和缓冲区Im来写入闪存位置

        //no data was written yet
        scanOptions_buffer[0].possition=0x02;
        scanOptions_buffer[0].frequency=0x01;
        scanOptions_buffer[0].frequency_resolution = DAYLY_FREQUENCY;
        scanOptions_buffer[0].hours=0x0C;
        scanOptions_buffer[0].minutes=0x00;
        scanOptions_buffer[0].seconds=0x00; 
        //io |= scanOptions_buffer[0].secondsseconds | scanOptions_buffer[0].minutes | scanOptions_buffer[0].hours; 
        buffer[0]=*(uint8_t*)(&scanOptions_buffer[0].possition);
        buffer[1]=*(uint8_t*)(&scanOptions_buffer[0].frequency);
*(uint32_t*)(&buffer[2])=scanOptions_buffer[0].frequency_resolution;
*(uint32_t*)(&buffer[6])=scanOptions_buffer[0].hours;
*(uint32_t*)(&buffer[10])=scanOptions_buffer[0].minutes;
*(uint32_t*)(&buffer[14])=scanOptions_buffer[0].seconds;

            status = nvm_write_buffer(TEST_PAGE_ADDR, buffer, sizeof(scanOptions_buffer[0]));

填充后,在重置时,我希望检查数据并将其读回缓冲区

scanOptions_buffer[1] = *(ScanOptions_struct*)buffer;
strong文本 但是,ScanOptions_结构指针与ScanOptions_结构变量不匹配,因为我遗漏了结构的32位部分

多谢各位