如何解决结构类型变量/指针不会丢失内存位置
我很努力地理解,当从flash传输时,如何在比较区中从flash中写入变量类型时,不同类型的变量会相互影响。
例如,我有一个结构。
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;
my code example strong文本 但是,由于我错过了结构的32位部分,所以ScanOptions_struct指针与ScanOptions_struct变量不匹配。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。