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

问题描述

我很努力地理解,当从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]));

written data to flash

一旦填充,重置后,我要检查数据并将其读回缓冲区。

scanoptions_buffer[1] = *(Scanoptions_struct*)buffer;

my code example strong文本 但是,由于我错过了结构的32位部分,所以Scanoptions_struct指针与Scanoptions_struct变量不匹配。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...