Pointers 结构类型变量/指针不丢失内存位置
我很难理解,在比较中,当从flash开始放射线时,如何用不同的方式解释变量类型 例如,我有一个structPointers 结构类型变量/指针不丢失内存位置,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;
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位部分
多谢各位